关于char *p = "";的思考

本文探讨了`char *p = "";`这样的初始化方式,指出它为字符串常量分配了一个长度为1的内存空间,包含了终止符``。通过代码测试展示了sizeof运算符在此情况下的行为,并强调尝试修改此空间内容会导致非法操作,如Segmentation fault。
摘要由CSDN通过智能技术生成

偶然记起在浏览别人的代码的时候发现有一处指针的初始化时这样写的:

char *p = "";

首先我们知道char *p = NULL;的意思是将p初始化为NULL(和'\0', 0)的意思一样,防止使用野指针p。不过char *p = "";又是什么意思呢?

main.c测试如下:

char *p = "";
printf("+++++++0x%08x\n", p);
printf("+++++++0x%08x\n", &p);
printf("+++++++%d\n", strlen(p));
printf("+++++++%d\n", *p);
printf("++++

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值