C语言二维数组指针程序理解,看不懂这个程序,#includemain (){\x05char *strl[]={"first","second","third"};//什么意思?\x05char *p1,**p2,**p3[3],***p4;//怎么这么多*?\x05p2=strl;\x05p1=*(++p2)+2;\x05printf("%s\n",p1);\x05p3[0]=p2;
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/02 01:45:25
![C语言二维数组指针程序理解,看不懂这个程序,#includemain (){\x05char *strl[]={](/uploads/image/z/2562244-52-4.jpg?t=C%E8%AF%AD%E8%A8%80%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84%E6%8C%87%E9%92%88%E7%A8%8B%E5%BA%8F%E7%90%86%E8%A7%A3%2C%E7%9C%8B%E4%B8%8D%E6%87%82%E8%BF%99%E4%B8%AA%E7%A8%8B%E5%BA%8F%2C%23includemain+%28%29%7B%5Cx05char+%2Astrl%5B%5D%3D%7B%22first%22%2C%22second%22%2C%22third%22%7D%3B%2F%2F%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D%3F%5Cx05char+%2Ap1%2C%2A%2Ap2%2C%2A%2Ap3%5B3%5D%2C%2A%2A%2Ap4%3B%2F%2F%E6%80%8E%E4%B9%88%E8%BF%99%E4%B9%88%E5%A4%9A%2A%3F%5Cx05p2%3Dstrl%3B%5Cx05p1%3D%2A%28%2B%2Bp2%29%2B2%3B%5Cx05printf%28%22%25s%5Cn%22%2Cp1%29%3B%5Cx05p3%5B0%5D%3Dp2%3B)
C语言二维数组指针程序理解,看不懂这个程序,#includemain (){\x05char *strl[]={"first","second","third"};//什么意思?\x05char *p1,**p2,**p3[3],***p4;//怎么这么多*?\x05p2=strl;\x05p1=*(++p2)+2;\x05printf("%s\n",p1);\x05p3[0]=p2;
C语言二维数组指针程序理解,看不懂这个程序,
#include
main ()
{
\x05char *strl[]={"first","second","third"};//什么意思?
\x05char *p1,**p2,**p3[3],***p4;//怎么这么多*?
\x05p2=strl;
\x05p1=*(++p2)+2;
\x05printf("%s\n",p1);
\x05p3[0]=p2;
\x05p3[1]=++p2;
\x05p3[2]=p2-1;
\x05p4=p3;
\x05printf("%s\n",++*--(++p4)[1]);
\x05return 0;
}这个程序真的看不懂,希望高手对每步解释说明下
C语言二维数组指针程序理解,看不懂这个程序,#includemain (){\x05char *strl[]={"first","second","third"};//什么意思?\x05char *p1,**p2,**p3[3],***p4;//怎么这么多*?\x05p2=strl;\x05p1=*(++p2)+2;\x05printf("%s\n",p1);\x05p3[0]=p2;
#include
main ()
{
char *strl[]={"first","second","third"};//定义长度为3的字符指针数组,数组元素是3个指向字符串的指针.这时候strl相当于二级char指针.
char *p1,**p2,**p3[3],***p4;
p2=strl; //p2是二级char指针,可以把strl的地址赋给它
p1=*(++p2)+2; //++p2,p2就等于strl[1]的地址了,取*后就是strl[1],str[1]是字符串second的首地址,再+2,p1就指向了字符c
printf("%s\n",p1); //输出字符c之后的字符串
p3[0]=p2; //p3是二级指针数组,让它的第一个元素等于p2
p3[1]=++p2; //让p3的第二个元素等于++p2.p2之前已经指向strl[1]了,++后指向strl[2]
p3[2]=p2-1; //让p3的第三个元素指向strl[1]
p4=p3; //二级指针数组的地址,相当于三级指针.p4这时候和p3等价
printf("%s\n",++*--(++p4)[1]); //++p4后,p4和&p3[1]等价,再[1]就等于p3[2],p3[2]指向的是strl[1],所以--后指向的是strl[0],*是取strl[0]的地址,再++就得到first中字符i的地址.
return 0;
}