如题所述
这两个表达式的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];追问
类似一个数组一个变量的区别
int i;
int i[10];追问
这两个p在内存中的存储是一样的吗
追答不一样的 char *p存的是地址 char p[]里存的是字符。
追问char p[]的p不是数组首元素地址吗,char *p 的p也是数组首元素的地址,那它们有什么区别呢
追答char p[]类似一个常量 而char*p是一个变量。