突然好奇指针里面 *p 和 *p+1以及 *p++的关系了,写了个小程序,展现了出来
#include<stdio.h>
int main(){
char *p = "chinese";
int i=1;
while (*p!='\0')
{
printf("The *p %d : %c\n",i,*p);
printf("The *p %d address %d \n",i,*p);
printf("The *p %d address %p \n",i,*p);
printf("The p %d : %s\n",i,p);
printf("The p %d address %s \n",i,p);
printf("The p %d address %p \n",i,p);
p=p+1; //等同*p++;
i++;
}
return 0;
}
执行结果为
正常情况,对于指针进行取值的话需要用p,p=p+1和p++也是同样效果,都是指向指针p的下一个内容。
对于char类型来说 用%c取值,就是单个字符串,此时打印*p的地址,其实就是字符串的ASCII值,c的ASCII指就是99 ,16进制表示就是0x63
用%s打印指针的内容,结果就是以这指针指向为起点到后面的字符串;
再看指针的地址,每次都会+1,也就是指针指向的地方,移动了一位。
描述的可能不是很清楚,建议看代码 或者把代码运行下。