c语言数组指针相关问题,求c大佬指导一下,谢谢!
charstr[]="shanghai",*p;p=str;p++;printf("%c,%c\n",*p,str[4]);结果是h和g我不能理解是p=str,和p++是...
char str[]="shanghai",*p ;
p=str;
p++;
printf("%c,%c\n", *p, str[4]) ;
结果是h和g
我不能理解是p=str,和p++是什么意思?如果是把str数组的值给p的话,为什么p还可以++,它的不是已经是数组了吗?如何进行++了? 展开
p=str;
p++;
printf("%c,%c\n", *p, str[4]) ;
结果是h和g
我不能理解是p=str,和p++是什么意思?如果是把str数组的值给p的话,为什么p还可以++,它的不是已经是数组了吗?如何进行++了? 展开
2个回答
展开全部
p是指针,str是数组str[]的首地址,p=str表示p指向数组str[]的首地址等价于p=str[0];
p++则是p指针指向的地址前进一个字节(因为str是char类型)表示p指向str[]的第二个元素此时p=str[1];
*p表示取p所指地址的变量值,这里p指向str[1],另外与*p对应的输出格式符是%c,故输出str[1]的内容‘h’;(如果输出格式符为s%则会输出p所指地址后面的所有字符即输出“hanghai”)
str[4]就没什么好讲的了,表示字符串第五个字符。。。str[0]='s';str[1]='h';以此类推str[4]='g'
希望我的回答能解决你的疑惑,望采纳
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询