本问题已经有最佳答案,请猛点这里访问。
我试图了解为什么以下字符串传递适用于我的错误字符串。 我已经从更大的来源获得了这个例子。
我的问题是; 为什么我不必专门为包含错误消息的char数组分配内存? 我以为我需要为该字符串分配一些内存,并使用err指针指示该内存的开始。
这是因为它是const char *还是因为我正在打印到stderr?
我可能会用错的措词来表达问题,这就是为什么搜索没有帮助我理解这一点。
const char * my_function(int a)
{
if (a != 1)
return"a doesn't equal 1!"
else
return NULL;
}
int main(int a)
{
const char *err;
err = my_function(a);
if (err)
fprintf(stderr,"Message = %s
",err);
return 1;
return 0;
}
请参阅:stackoverflow.com/questions/4836534/
所有字符串文字都在编译时分配。当您启动程序时,它们已经驻留在程序存储器的只读区域中。它们不会在运行时分配。您可以将它们视为常量字符数组。与任何const变量一样,它们在程序的整个执行过程中仍然有效。
"所有字符串文字都在编译时分配。" -对我来说,这是给出的所有答案中最有用的部分。
"所