请问一下字符串常量是什么类型!·· 谢谢!
char *p="woaini";
这个"woaini" 是什么类型,我看了其他的帖子说是 const char *,如果是的话,为什么可以赋值给char *!
还有的说是 char []!
请解释一下 谢谢!
我测试了一下:
char *p="woaini";
p[0]='m';
编译无错,运行程序直接挂掉!·· 为什么?
[解决办法]
这里的赋值和普通变量赋值有一些区别。
int a=3;这种语句,使得a的值等于3。
char *p="woaini";这条语句中" "双引号里面的是一个字符串,是常量,保存在只读区域内,修改其中内容就会出错。这里的“=”也是赋值,但只是把这个字符串常量第一个元素的地址保存到了p里面,p只是指向了这段只读内存。
char arr[1024],这个开辟了空间,这个空间可读可写。
[解决办法]
一楼正解
C语言的关键,是对指针,内存的理解
char *p="woaini"; 中,"woaini"是定义了一个只读的字符串类型。
p则是一个指针,它指向了这个只读的内存。
[解决办法]
正如楼上说的,“woaini”是字符串常量在声明时就已经确定了它是只读的不能修改的。
[解决办法]
常量赋值给变量很正常啊
比如
int a = 3;
这里3应该也是一个常量, 整型常量 赋值给了整型变量a
[解决办法]
我定义了四个变量, 如下:
char *s = "string";char s1[10];char s2[10];int a;
[解决办法]
后来, 又加了一个 char *cs = "cs"; printf("%p\n", cs); 之后, 输出结果为:
s'p =0x8048600
cs'p=0x8048607
n'p =0xbfb64df8
s1'p=0xbfb64e08
s2'p=0xbfb64e12
&a =0xbfb64dfc
[解决办法]