蛋糕店网页设计图片/seo兼职
指针数组,即指针所组成的数组,其本质也是指针。数组和指针由于其本质上都是地址,所以在输入时,不用加&,但是在输出时,需要加*。
1 #include<stdio.h>2 int main()3 {4 int a[3][4];5 int *p[3]; //占24个字节6 int i,j;7 for(i=0;i<3;i++)8 *(p+i)=*(a+i); //可写为p[i]=a[i]。9 10 for(i=0;i<3;i++)11 for(j=0;j<4;j++)12 scanf("%d",p[i]+j); //可写为*(p+i)+j13 14 15 for(i=0;i<3;i++)16 { for(j=0;j<4;j++)17 printf("%d\t",*(p[i]+j)); //可写为*(*(p+i)+j))18 putchar('\n');}19 }
在讲数组指针之前,首先要明白,多维数组的数组名,代表的是第一个数组的地址,而不是首元素的地址,更不能代表整个数组的地址。
1 #include<stdio.h>2 int main()3 {4 int a[3][4];5 int (*pa)[4];6 int i;7 for(pa=a;pa<a+3;pa++) //a代表首个一维数组的地址,a+3代表第三个,不能写pa<3,pa是地址,怎么小于一个数?8 {9 for(i=0;i<4;i++)10 {11 scanf("%d",*pa+i); //&a[i][j]相当于*(a+i)+j,a+i相当于pa12 }13 }14 15 for(pa=a;pa<a+3;pa++)16 {17 for(i=0;i<4;i++)18 {19 printf("%d\t",*(*pa+i)); //二维数组是*(*(a+i)+j),这里的a+i就相当于pa20 }21 printf("\n");22 }23 }