c语言中char* p = "Hello";和char p[] = "Hello";的p有什么区别,都是常量指针吗?希望解释得详细些

如题所述

这两个表达式的p都是存储字符H的地址的指针。它们的区别是:*p中的p是普通指针,可以进行++、--操作,但它指向的Hello是常字符串,不能修改(就是不能写操作),所以像*(p+1)='x';这样的语句是非法的;但这个p可以指向别处,如有char *s="123";,则p=s;合法。而p[]中的p是常指针,不能++、--操作,也不能指向别处,但它指向的字符串Hello不是常字符串,可以修改,如*(p+1)='x';则是合法的,执行后原字符串就成了Hxllo了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-07
一个是指针变量 一个是数组名。
类似一个数组一个变量的区别
int i;
int i[10];追问

这两个p在内存中的存储是一样的吗

追答

不一样的 char *p存的是地址 char p[]里存的是字符。

追问

char p[]的p不是数组首元素地址吗,char *p 的p也是数组首元素的地址,那它们有什么区别呢

追答

char p[]类似一个常量 而char*p是一个变量。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网