嵌入式技术论坛
直播中

老土豆

8年用户 61经验值
擅长:可编程逻辑 电源/新能源 RF/无线
私信 关注
[问答]

问一个二维数组和指针的问题?

比如定义一个二维数组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?该怎么理解呢?以前写程序没怎么用到二维数组这块,今天无意间发现了这个问题,求解决!

回帖(1)

将军问鼎

2017-5-9 11:28:04
先给你给你一个程序
  1. #include

  2. int main(int argc, char **argv)
  3. {
  4.         int a[3][5];
  5.        
  6.         a[0][0]  =1;
  7.        
  8.         printf("%drn",*a[0]);
  9.         printf("%drn",a[0]);
  10.         printf("%drn",a);
  11.         printf("%drn",*a);
  12.        
  13.        
  14.         printf("hello worldn");
  15.         return 0;
  16. }


其实这里,你有一个误区,实际上  二维数组中  *a  与  a[0] 是等效的,我相信你已经明白了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分