c语言const字符串,在C中使用const char *返回字符串

本问题已经有最佳答案,请猛点这里访问。

我试图了解为什么以下字符串传递适用于我的错误字符串。 我已经从更大的来源获得了这个例子。

我的问题是; 为什么我不必专门为包含错误消息的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变量一样,它们在程序的整个执行过程中仍然有效。

"所有字符串文字都在编译时分配。" -对我来说,这是给出的所有答案中最有用的部分。

"所

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值