早教吧作业答案频道 -->其他-->
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;
}这个程序真的看不懂,希望高手对每步解释说明下
#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;
}这个程序真的看不懂,希望高手对每步解释说明下
▼优质解答
答案和解析
#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;
}
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;
}
看了 C语言二维数组指针程序理解,...的网友还看了以下:
toinvestigatein啊啊啊有没有这个词组咩?有的话这是什么意思0.0-Whatwehav 2020-05-13 …
matlab解一个二元方程组为何出现错误.方程组为0.0231=d+p0.0284=0.0231+ 2020-05-16 …
已知4阶方阵A=(a1,a2,a3,a4)如果(0,1,0,1)是线性方程组的解,求A*x=0的通 2020-05-16 …
向量组1 0 0是线性无关的,按定义,其 0 1 0向量组1 0 0是线性无关的,按定义,其0 1 2020-05-17 …
设a,b,c,d为互不相同的实数,A=1111abcda2b2c2d2,则下列结论中正确的是()A 2020-07-09 …
η0是非齐次线性方程组Ax=B的特解ξ1,ξ2...ξn-r是导出组Ax=0的基础解系证η0,ξ1 2020-07-21 …
方程组(Ab^T)x=0与方程组Ax=0是同解方程组的充要条件是A^Ty=b有解方程组(Ab^T) 2020-07-31 …
则l0+l1+l2=0,否则η0将是Ax=0的解,矛盾什么意思啊1.设η0是非齐次线性方程组Ax= 2020-07-31 …
离散系数的具体意义是什么?举个很简单的例子,一组数0.1,0.2,0.3,另一组数0.4,0.5,0 2020-11-18 …
甲、乙、丙三组工人加工同样的零件,它们出现废品的概率:甲组是0.01,乙组是0.02,丙组是0.03 2020-12-21 …