黑马程序员技术交流社区
标题:
求大神指教
[打印本页]
作者:
2014571245
时间:
2014-4-13 15:30
标题:
求大神指教
本帖最后由 2014571245 于 2014-4-19 13:08 编辑
#include<stdio.h>
int main()
{
char *p="abcdef";
p[1]='c';
return 0;
}
这段代码编译、链接是都通过了,为什么运行结果不正确呢?!!!!有图有真相
作者:
于清扬
时间:
2014-4-13 17:11
char a[]="abcdef";用数组定义字符串,存放在栈里面,一般称为字符串变量,里面的字符是可修改的。
char *p="abcdef";用指针定义字符串,存放在常量区里面,一般称为字符串常量,里面的字符是不可修改的。
这里指针p指向的是首字符的地址,在这里就是a,而且如果你再定义一个char *p2=“abcdef”其实指向的还是同一个常量。
p[1]='c';这句等于是在修改一个常量,所以就会报错。
如果你还不明白的话可以看一下c语言基础-复杂数据类型-10指针与字符串,视频里有讲
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2