马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 BaysideLizard 于 2023-11-14 22:22 编辑 #include <stdio.h>
//DNX写于2023年10月26日
int main()
{
int array[4][5] = {0};
int i,j,k = 0;
for (i = 0;i < 4; i++)
{
for(j = 0; j < 5; j++)
{
array[i][j] =k++;
}
}
printf("指针与二维数组:\n");
printf("打印一下array:\n");
for (i = 0;i < 4; i++)
{
for(j = 0; j < 5; j++)
{
printf("%d ",array[i][j]);
}
putchar('\n');
}
printf("array + 1 :%p\n",array + 1);
printf("*(array + 1) :%p\n",*(array + 1));
printf("array[1] :%p\n", array[1]);
printf("array[1][0] :%d\n", array[1][0]);
printf("&array[1][0] :%p\n", &array[1][0]);
printf("**(array + 1) :%d\n", **(array + 1));
printf("*(*(array + 1) + 3) :%d\n", *(*(array + 1) + 3));
printf("array[1][3]:%d\n", array[1][3]);
putchar('\n');putchar('\n');
printf("数组指针与二维数组:\n");
int arrayb[2][3] = {{0,1,2},{3,4,5}};
int (*p)[3] = arrayb;
printf("打印一下arrayb:\n");
for (i = 0;i < 2; i++)
{
for(j = 0; j < 3; j++)
{
printf("%d ",arrayb[i][j]);
}
putchar('\n');
}
printf("**(p+1): %d\n",**(p+1));
printf("**(arrayb+1): %d\n",**(arrayb+1));
printf("arrayb[1][0]: %d\n",arrayb[1][0]);
printf("*(*(p+1)+2): %d\n",*(*(p+1)+2));
printf("*(*(arrayb+1)+2): %d\n",*(*(arrayb+1)+2));
printf("arrayb[1][2]: %d\n",arrayb[1][2]);
return 0;
}
/*
结论:
*(array + i) == array[i]
*(*(array + i) + j) == array[i][j]
*(*(*(array +i) + j) + k ) == array[i][j][k]
......
定义一个数组指针int (*p)[3] = arrayb;
*(p + i) == *(arrayb+i) == arrayb[i]
*(*(p + i) + j) == *(*(array + i) + j) == arrayb[i][j]
*(*(*(p + i) + j) + k) == *(*(*(array +i) + j) + k ) == arrayb[i][j][k]
*/
运行结果:
指针与二维数组:
打印一下array:
0 1 2 3 4
5 6 7 8 9
10 11 12 13 14
15 16 17 18 19
array + 1 :000000000061FDB4
*(array + 1) :000000000061FDB4
array[1] :000000000061FDB4
array[1][0] :5
&array[1][0] :000000000061FDB4
**(array + 1) :5
*(*(array + 1) + 3) :8
array[1][3]:8
数组指针与二维数组:
打印一下arrayb:
0 1 2
3 4 5
**(p+1): 3
**(arrayb+1): 3
arrayb[1][0]: 3
*(*(p+1)+2): 5
*(*(arrayb+1)+2): 5
arrayb[1][2]: 5
Process returned 0 (0x0) execution time : 0.052 s
Press any key to continue.
在FishC学C的第九天
加油! |