函数里定义的字符串常量与字符指针

本文探讨了函数内部定义的字符串常量(如`char p[] = "hello world"`)是否会随函数结束而消失。实际上,这个字符串常量存储在静态区,不会消失,但返回的指针在函数调用结束后可能无效,可能导致悬挂指针问题。在`Test4`函数中,`GetString()`返回的`p`在函数退出后不再有效,但指向的"hello world"字符串依然存在。
摘要由CSDN通过智能技术生成

 

今天产品同事问了个文件系统相关的问题,平台这边的文件系统自己组织,定义了个结构体数组,数组里面有个字符指针,在产品调用相关接口函数时将函数名(其实是个字符串)赋给该指针。产品同事说这样有问题,说没有给指针申请空间,就直接用了,他这么一问我也懵了,平台一直在用,没有问题啊,百度了一下有如下解答:

 

问题:

请问函数里定义的字符串常量会随着函数结束时自动消亡吗?如下代码:

char *GetString(void) 
{ 
  char p[] = "hello world"; 
 return p; 
} 
void Test4(void) 
{ 
char *str = NULL; 
str = GetString(); 
cout<< str << endl; 
} 

//  char p[] = "hello world";  这句helloworld 常量在静态区,会随着函数结束消失吗?

 

 

解答:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值