c/c++中指针与二维数组的关系demo程序

来源:互联网 发布:测试网络丢包率软件 编辑:程序博客网 时间:2024/05/22 06:39
#include<stdio.h>
#include<stdlib.h>
int main()
{
int (*p)[10];
int number=0;
p=malloc(sizeof(int)*20*10);
for(int i=0;i<20;i++)
for(int j=0;j<10;j++)
p[i][j]=number++;
for(int i=0;i<20;i++)
{for(int j=0;j<10;j++)
printf("%d\t",p[i][j]);
printf("\n");
}
return 0;

}

我的上一篇帖子说,二维数组本质上是一维数组,二维数组的数组名是指向第一行数组的首地址,我们也叫它行指针。那么我们可以用这种数组名或者指针来访问二维数组的元素。
    
int (*pArr)[3] ;  
下面,我要访问第一行第二列的元素,我可以用下面的代码来访问

*(*(pArr+1) + 2) 

用malloc函数为二维数组开辟地址空间

p=malloc(sizeof(int)*20*10);

也就是说int p[20][10];本质上等价于

int (*p)[10]=(int)malloc(sizeof(int)*20*10);

0 0
原创粉丝点击