C语言指针与二维数组详解

 2023-03-16 20:06:41  阅读 0

一、二维数组元素的地址

我们假设数组a的首 地址为0x2000,那么在内存中的实际存 储方式是什么样的那?接下来我们就使用抽象表示 如图所示。

我们上面的第一种方式就是指针指向二维数组中的元素,此时指针的移动是以元素为单位进行的,这种指针属于指向“数组元素”的指针,有时称为“列指针”;

那么我们把指针p2指向二维数组的首元素之后会发生什么那,p2+1将指向数组的第2个元素,p2+2将指向数组的第3个元素,依次类推。

我们接下来看一下下面的语句段进行深入的了解:

int a[3][4];
    int *p = &a[0][0];

定义了一个int型指针p指向二维数组a的首元素。

#include <stdio.h>
int main( )
{
 int a[3][4]= {{1,2,3,4},{5,6,7,8},{9,10,11,12}},i,j,*p;
 p=&a[0][0];
 for(i=0;i<3;i++)
 {
  for(j=0;j<4;j++)
  {
   printf("%5d",*p);
   p++;  
  }
  printf("\n");
 }
 return 0;
}

程序运行结果如下: 1      2     3     4 5     6     7     8 9    10    11    12

二维数组的引用除了上述的方式还有第二种方式:

第二种方式其实就是让指针指向了组成二维数组的一维数组,那么此时指针的指针的移动是什么的那。其实就是以一维数组为单位的,该指针属于指向“数组”的指针,称为“行指针”。 

 

标签:

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码