struct st{
int a;
char *ptr;
}obj;
main()
{
obj.a=10;
obj.ptr="Hello World"; // (1) memory allocation?
printf("%d,%s",obj.a,obj.ptr);
}
Run Code Online (Sandbox Code Playgroud)
ptr
在struct中声明.Hello world
发生分配时,未分配内存,但此程序正常工作并正确输出.在标记处完成作业时,它不应该失败/崩溃(1)
吗?
"Hello World"
是一个字符串文字,驻留在程序的只读内存部分(.rodata)中.您指向此部分然后打印内容.程序行为100%定义良好,不应该崩溃.
但是,最好始终将指向字符串文字的指针声明为const char*
,因为不允许修改字符串文字.