我有一个关于复合字面量中字符串文字的问题。
由于结构体S复合字面量的生命周期在包围函数调用的块内,因此我想知道是否仍然可以在全局变量gs中使用名称指针。我猜字符串文字"foo"不是绑定到复合字面量的生命周期中,而是驻留在.rodata中?是这样吗?至少gs.name仍然打印foo。
#include <stddef.h>
#include <stdio.h>
struct S
{
const char *name;
int size;
};
static struct S gs;
static void func(struct S *s)
{
gs = *s;
}
int main(void)
{
{
func(&(struct S){.name="foo",.size=20});
}
printf("name: %s size: %d\n", gs.name, gs.size);
return 0;
}