二维指针数组怎么初始化c语言,C语言一些总结(1)—二维指针数组初始化

二维指针数组初始化

行数为:row

列数为:column

方式一:

int **dp1;

dp1 = (int **)malloc(sizeof(int *) * row);//分配指针数组,计算行的大小

for(int i=0; i

方式二:

int*ptr[row];

for(int i=0;i

方式三:

int (*ptr)[column];

//方式一

ptr=(int(*)[column])malloc(sizeof(int)*row*column);

//方式二

for(int i=0;i

定义如下3个二维数组和二维指针进行说明:

1.  int **ptr;   //内存占用4个自己,也就是一个指针

2.  int *ptr[M]; //占用4*M个自己

3.  int (*ptr)[M];//占用4个字节

以上都是存放整数的二维数组,并且可以通过ptr[i][j]的形式访问内容,但是它们之间有很大差别,一些依照文中提到的方面

进行分析。

三个ptr本身都是指针,并且是二维指针,但是它们的最终内容总是整数,但中间内容,如ptr[i]并不是正式,而是指针int*

1.int**ptr 表示指向(一组指向整数数据指针)的指针

2.int *ptr[M]是指针数组,表示指向(M个指向整形数指针)的指针

3. int(*ptr)[M]表示指向一组(指向包含M个整形数据的指针)的指针。

参考链接:https://blog.csdn.net/nanjoh/article/details/54406988

另外补充一个小技巧。

求二维数组的总行数和总列数。

行数 = sizeof(array)/sizeof(array[0]);

列数 = sizeof(array[0])/sizeof(array[0][0]);

你可能感兴趣的:(二维指针数组怎么初始化c语言)