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