关于C语言指向指针数据的指针变量的例题理解:
这是第一次写,就是感觉这个例题挺好的,可以帮助辨析理解,自己就写一下每个语句的解释,也想和初学者们分享下,大家请多指正。
小白,想法不成熟,我认为一级的指针数组就是将不同的字符串的首地址存储到了指针变量中,而二级的指针就是将这些存放地址的指针变量的首地址再次存储在另一个指针变量里。
理解如下:
char *name[5];
char **p;
p=name+2;
printf("%d",*p);//p所指向的是name[2]的地址,*p意思为将其所指向的地址的具体值取出;
printf("%s",*p);//*p意思是name[2]所存储字符串的首地址,%s作用是将指针变量存储的首地址所指向的字符串整个输出,所以输出为Great Wall;
printf("%c",*(*p+6));//将name[2]的首地址的指针向后移动六个元素,即指针依次经历r、e、a、t、空格、W结束,将其‘W’输出;
printf("%d",name);//name实际上可以理解为二级指针,它相当于把二维指针数组所有字符串的首地址集合在一起,此语句将name的地址输出;
printf("%d",*name);//将name地址所指向的name[0]的地址打印出来;
printf("%c",**name);//将name地址指向的【name[0]首地址指向的】元素输出;
printf("%d",name[2]);//将name[2]存储的字符串首地址输出;
printf("%s",name[2]);//将name[2]存储的字符串首地址所指向的整个字符串全部输出;
printf("%c",*(name[2]+6));//将指向name[2]首元素的指针向所在字符串后方移动六个元素,即指针依次经历r、e、a、t、空格、W结束,将其‘W’输出;