|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- int main()
- {
- int array[4][5] = {0};
- int i, j, k = 0;
- int (*p)[5] = array;//p和array完全一样,下面出现array的地方完全可以用p取代,至于为啥要再弄个指针p来指代array,我暂时还不知道
- for (i = 0; i < 4; i++)
- {
- for (j = 0; j < 5; j++)
- {
- array[i][j] = k++;
- }
- }
- printf("sizeof int: %d\n\n", sizeof(int));
- printf("array矩阵是这个样子滴:\n\n");
-
- for (i = 0; i < 4; i++)
- {
- for (j = 0; j < 5; j++)
- {
- printf("%2d ",array[i][j]);
- }
- printf("\n");
- }
- printf("\n");
-
- printf("array矩阵各个位置的地址是这个样子滴:\n\n");
-
- for (i = 0; i < 4; i++)
- {
- for (j = 0; j < 5; j++)
- {
- printf("&array[%d][%d]: %p\n",i,j,&array[i][j]);
- }
- }
- printf("\n");
-
- printf("array: %p\n", array);
- printf(" p: %p\n\n", p);
-
- printf(" array[0][0]: %d 数组表示法\n", array[0][0]);
- //printf(" p[0][0]: %d\n", p[0][0]);
- printf("*(*(array+0)+0): %d 指针表示法\n", *(*(array+0)+0));
- printf(" &array[0][0]: %p 数组表示法\n", &array[0][0]);
- printf(" *(array+0)+0: %p 指针表示法\n\n", *(array+0)+0);
-
- printf(" array[0][1]: %d\n", array[0][1]);
- //printf(" p[0][1]: %d\n", p[0][1]);
- printf("*(*(array+0)+1): %d\n", *(*(array+0)+1));
- printf(" &array[0][1]: %p\n", &array[0][1]);
- printf(" *(array+0)+1: %p\n\n", *(array+0)+1);
-
-
-
- printf("*(*(array+0)+1): %d\n", *(*(array+0)+1));
- //printf(" *(*(p+0)+1): %d\n", *(*(p+0)+1));
- printf(" array[0][1]: %d\n", array[0][1]);
- printf(" *(array+0)+1: %p\n", *(array+0)+1);
- //printf(" *(p+0)+1: %p\n", *(p+0)+1);
- printf(" *array+1: %p\n", *array+1);
- //printf(" *p+1: %p\n\n", *p+1);
-
-
- printf(" array + 1: %p\n", array + 1);
- //printf(" p + 1: %p\n", p + 1);
- printf(" *(array+1): %p\n", *(array + 1));//若取%d显示2293220,说明其本身是地址,故要取%p ,说明前面的×不是取值的意思
- //printf(" *(p+1): %p\n", *(p+1)); //若取%d显示2293220,说明其本身是地址,故要取%p ,说明前面的×不是取值的意思
- printf(" array[1]: %p\n", array[1]);//取%d显示2293220,说明其本身是地址,故要取%p
- printf("&array[1][0]: %p\n\n", &array[1][0]);
-
- printf(" **(array+1): %d\n", **(array+1));
- //printf(" **(p+1): %d\n", **(p+1));
- printf(" array[1][0]: %d\n\n", array[1][0]);
-
- printf("*(*(array+1)+3): %d\n", *(*(array+1)+3));
- printf(" array[1][3]: %d\n\n", array[1][3]);
-
-
-
- //printf(" *(*(p+1)+2): %d\n", *(*(p+1)+2));
- printf("*(*(array+1)+2): %d\n", *(*(array+1)+2));
- printf(" array[1][2]: %d\n", array[1][2]);
- return 0;
- }
复制代码
结果如下:
sizeof int: 4
array矩阵是这个样子滴:
0 1 2 3 4
5 6 7 8 9
10 11 12 13 14
15 16 17 18 19
array矩阵各个位置的地址是这个样子滴:
&array[0][0]: 000000000022FDD0
&array[0][1]: 000000000022FDD4
&array[0][2]: 000000000022FDD8
&array[0][3]: 000000000022FDDC
&array[0][4]: 000000000022FDE0
&array[1][0]: 000000000022FDE4
&array[1][1]: 000000000022FDE8
&array[1][2]: 000000000022FDEC
&array[1][3]: 000000000022FDF0
&array[1][4]: 000000000022FDF4
&array[2][0]: 000000000022FDF8
&array[2][1]: 000000000022FDFC
&array[2][2]: 000000000022FE00
&array[2][3]: 000000000022FE04
&array[2][4]: 000000000022FE08
&array[3][0]: 000000000022FE0C
&array[3][1]: 000000000022FE10
&array[3][2]: 000000000022FE14
&array[3][3]: 000000000022FE18
&array[3][4]: 000000000022FE1C
array: 000000000022FDD0
p: 000000000022FDD0
array[0][0]: 0 数组表示法
*(*(array+0)+0): 0 指针表示法
&array[0][0]: 000000000022FDD0 数组表示法
*(array+0)+0: 000000000022FDD0 指针表示法
array[0][1]: 1
*(*(array+0)+1): 1
&array[0][1]: 000000000022FDD4
*(array+0)+1: 000000000022FDD4
*(*(array+0)+1): 1
array[0][1]: 1
*(array+0)+1: 000000000022FDD4
*array+1: 000000000022FDD4
array + 1: 000000000022FDE4
*(array+1): 000000000022FDE4
array[1]: 000000000022FDE4
&array[1][0]: 000000000022FDE4
**(array+1): 5
array[1][0]: 5
*(*(array+1)+3): 8
array[1][3]: 8
*(*(array+1)+2): 7
array[1][2]: 7
--------------------------------
Process exited after 0.05153 seconds with return value 0
请按任意键继续. . . |
|