C语言赋值问题 20

各位大神,我遇到一个奇怪的问题:{char*iter='\0';}{char*iter;*iter='\0';}我觉得这两种赋值效果本该是一样的,但是一种编译运行没问题,... 各位大神, 我遇到一个奇怪的问题:
{
char *iter = '\0';
}
{
char *iter;
*iter = '\0';
}
我觉得这两种赋值效果本该是一样的, 但是一种编译运行没问题, 但是第二种直接报错。

请问是为什么呢?
展开
 我来答
金色潜鸟
2018-08-24 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5730万
展开全部
char *iter; 声明了指针 iter, 但没有动态分配存储空间。
*iter = '\0'; 因没有数据存储空间,所以出错。
char *iter = '\0'; 声明了指针 iter, 并作了初始化,所以 有了 sizeof ('\0') 大小的存储空间,存放了 '\0' 数值,所以正确无误。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光的雷咩咩
2018-08-24 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7859万
展开全部
有区别。
第一种是语法规定的声明时赋值。
第二种,先声明了个指针,但值为null,然后*p是解引,空指针指向的值没意义。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式