下面这段代码我没懂求解答!
#include<stdio.h>int main()
{
inta={0,1,2,3,4,5,6,7,8,9,10,11};
int (*p); //这儿
int i,j;
p=a;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%2d ",*(*(p+i)+j)); //这儿
}
printf("\n");
}
} 本帖最后由 jhq999 于 2022-5-27 06:16 编辑
#include<stdio.h>
int main()
{
inta={0,1,2,3,4,5,6,7,8,9,10,11};
int (*p); //声明一个一维大小是4的二维数组指针
int i,j;
p=a;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%2d ",*(*(p+i)+j)); //p+i=&p;*(p+i)=p;*(p+i)+j=&p;*(*(p+i)+j))=p;
}
printf("\n");
}
} 本帖最后由 jackz007 于 2022-5-27 09:52 编辑
int (* p) ; // 定义一个指向末维为 4 的二维整型数组指针 p,这样,p ++ 带来的指针跨度是 4 个 int,就是指向数组的下一行。
* (* (p + i) + j)) ; // p 指向了 a,那么,p 就是 a,只不过 a 是常量,而 p 是变量,这个表达式实际上就是 p,也就是 a,关于这个,可以结合前面说的 p ++ 的跨度是 4 个 int 来进行理解。
页:
[1]