比如定义一个二维数组int a[3][5], 我们知道a是这个二维数组的首地址,a[0]是第一行元素的首地址,假设这个二维数组的第一个元素a[0][0]值赋1,a[0][0]元素的地址值是1000,那么a[0]的地址值应该是1000,取里边的值,即*a[0]就是1,那么a的地址值也是1000.取里边的值,a可以看成指向数组指针的指针,所以*a的值也就是1000.那么我的问题是1000这个地址里放的值既可以是1000也可以是1?该怎么理解呢?以前写程序没怎么用到二维数组这块,今天无意间发现了这个问题,求解决!
2017-5-9 11:28:04
先给你给你一个程序
- #include
- int main(int argc, char **argv)
- {
- int a[3][5];
-
- a[0][0] =1;
-
- printf("%drn",*a[0]);
- printf("%drn",a[0]);
- printf("%drn",a);
- printf("%drn",*a);
-
-
- printf("hello worldn");
- return 0;
- }
其实这里,你有一个误区,实际上 二维数组中 *a 与 a[0] 是等效的,我相信你已经明白了
先给你给你一个程序
- #include
- int main(int argc, char **argv)
- {
- int a[3][5];
-
- a[0][0] =1;
-
- printf("%drn",*a[0]);
- printf("%drn",a[0]);
- printf("%drn",a);
- printf("%drn",*a);
-
-
- printf("hello worldn");
- return 0;
- }
其实这里,你有一个误区,实际上 二维数组中 *a 与 a[0] 是等效的,我相信你已经明白了
举报