读书人

请教一下字符串常量是什么类型!amp;#183

发布时间: 2012-05-07 12:40:40 作者: rapoo

请问一下字符串常量是什么类型!·· 谢谢!

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

[解决办法]
我定义了四个变量, 如下:

C/C++ code
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

[解决办法]
探讨
char *p="woaini";

这个"woaini" 是什么类型,我看了其他的帖子说是 const char *,如果是的话,为什么可以赋值给char *!

还有的说是 char []!


请解释一下 谢谢!


我测试了一下:

char *p="woaini";
p[0]='m';

编译无错,运行程序直接挂掉!·· 为什么?

读书人网 >C语言

热点推荐