读书人

字符指针和数组赋值区别,该怎么解决

发布时间: 2012-04-22 18:34:46 作者: rapoo

字符指针和数组赋值区别
C里面 我这段代码错在哪里了:

char *str="helloxxx";
str[0]=12;
就这里错了,当我定义: char str[]="helloxxx";
str[0]=12;
没有错。就是这两种的区别我想知道。。。。。。。。。。

[解决办法]
char *str="helloxxx";
这样是 字符串字面值,是常量,不可更敢的。
[解决办法]
char *str="helloxxx";
是一个常量指针,不能修改

[解决办法]

探讨

char *str="helloxxx";
是一个常量指针,不能修改

[解决办法]
探讨

那这个指针要是再指向其他的变量,那之前的“helloxxx”的内存一直存在而且找不到了。。。。。相当于浪费了吗?

[解决办法]
探讨
那这个指针要是再指向其他的变量,那之前的“helloxxx”的内存一直存在而且找不到了。。。。。相当于浪费了吗?

[解决办法]
char *str="helloxxx";
你在这儿定义的字符串"helloxxx"是放在只读数据段。然后把该字符串的首地址赋值给指针变量str。你对其修改当然是不可以了。
但是你这样定义:char str[]="helloxxx";那么"helloxxx"也是放在只读数据段里,但是有一点数组str申请了这个多的空间,然后拷贝一份("helloxxx")到申请的空间里。在这些空间里的字符是可读可写的。所以你可以修改每一个空间里的字符。
这也是指针和数组的区别吧。指针存放的是字符串的地址,你修改的内容是源字符串;数组是字符串常量的拷贝,你修改的拷贝的字符串。
[解决办法]
char *str="helloxxx";
str[0]=12;

str指向常量字符串,肯定不能通过str修改。

读书人网 >C语言

热点推荐