数组和指向字符串文字的指针之间的差异
发布时间:2020-12-16 09:49:10 所属栏目:百科 来源:网络整理
导读:我是C的新手,所以这可能是一个愚蠢的问题.我正在编写一段代码如下: char ar[]="test";*(ar+1)='r'; 这工作正常.但无论何时我这样做: char *p="test";*(p+1)="r"; 这是分段错误.任何人都可以描述为什么第二种情况会给出分段错误?从记忆的角度来解释将不胜
我是C的新手,所以这可能是一个愚蠢的问题.我正在编写一段代码如下:
char ar[]="test"; *(ar+1)='r'; 这工作正常.但无论何时我这样做: char *p="test"; *(p+1)="r"; 这是分段错误.任何人都可以描述为什么第二种情况会给出分段错误?从记忆的角度来解释将不胜感激. 解决方法
在第二种情况下,p指向字符串文字并且不允许修改字符串文字,它是
undefined behavior.从
C99 draft standard部分6.4.5字符串文字第6段(强调我的):
在第一种情况下,ar是一个自动变量,你可以修改它,因为它不是const限定的.在初始化或ar期间复制字符串文字的内容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |