#include<stdio.h>
int main()
{
int s[4][2]={
{1234,56},
{1212,33},
{1434,80},
{1312,78},
};
int (*p)[2];
int i,j,*pint;
for(i=0;i<=3;i++)
{
p=&s[i];
pint=(int *)p;
printf("\n");
for(j=0;j<=1;j++)
printf("%d\t",*(pint+j));
}
return 0;
}
在此代码段中,程序员使用了两个指针变量“ p”和“ pint”?我不能仅使用'p'变量获得结果吗?
最佳答案
是的,只有p
可以在此处结帐:(注意:这取决于他们可能试图理解指针概念的目的)
int main()
{
int s[4][2]={
{1234,56},
{1212,33},
{1434,80},
{1312,78},
};
int (*p)[2];
int i,j;
p=s;
for(i=0;i<=3;i++)
{
for(j=0;j<=1;j++)
printf("%d\t",p[i][j]);
printf("\n");
}
return 0;
}
在您的代码中,他们试图解释如何创建
2D pointer
以及该2D pointer
如何指向row
中的2D array
;这里p=&s[i];
p
指向2D数组s
的第一行。现在pint=(int *)p;
,这里的int
指针pint
指向2D数组s
的第一行。最后使用指针pint
作为*(pint+j)
打印值。