#include <stdio.h>
int main()
{
char *name[]={"Follow me","BASIC","Great Wall","FORTRAN","Computer design"};
char **p;
int i;
char ch;
for (i=0;i<5;i++)
{
p=name+i;
printf("*p=%c\n",*p);//此处*p=name[i]字符串第一个字符的地址,输出最后两位数字的ascii码值
printf("*p=%s\n",*p);//此处*p=name[i]字符串第一个字符的地址,输出第i个字符串
printf("**p=%c\n",**p);//此处*p=name[i]字符串第一个字符,输出字符(**p)
printf("ch=%c\n",ch=**p);//此行是为了证明上面的结论的,输出同上
printf("%d\n",**p);//此处*p=name[i]字符串第一个字符的整形数字(ascii),输出F=70;B=66;G=71;F=70;C=67
printf("p=%d\n",p);//name[i]字符串第一个字符的地址 (不同计器输出不同,但相邻值差4)
printf("p=%s\n",p);//这个直到现在我都还没揣摩出来(。。。。望知道者补充之。。)
printf("\n");
}
return 0;
}
printf("p=%s\n",p);//这个直到现在我都还没揣摩出来(。。。。望知道者补充之。。)
上一句printf("p=%d\n",p)输出的是第一个字符串的地址,而你将地址直接按字符串的格式数出来自然就会出来不可预料的结果
将上句话改为printf("p=%s\n",*p);
即可得到第一个字符串。
就选你了
指针的指针不就是引用吗