二维指针数组初始化
行数为: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]);