行指针就是二级指针吗?
在看回C语言的时候,看到行指针跟二级指针怎么挺像的?他们什么关系啊,最后举例子说明下
[解决办法]
指针的类型不同而已。
int array[ROW][COL];定义的一个二维数组,那么array是数组的首地址,int (*p)[COL] = array;
该指针和指向int *q = array[0];的指针的类型不同。指针p可以理解为int(*)[COL]类型的指针,那么指针q是int *类型的指针。所以,p+1跳过的是COL*4个字节,而q+1跳过的是1*4个字节。
[解决办法]
- C/C++ code
//在堆中开辟一个4×5的二维int数组#include <stdio.h>#include <malloc.h>int **p;int i,j;void main() { p=(int **)malloc(4*sizeof(int *)); if (NULL==p) return; for (i=0;i<4;i++) { p[i]=(int *)malloc(5*sizeof(int)); if (NULL==p[i]) return; } for (i=0;i<4;i++) { for (j=0;j<5;j++) { p[i][j]=i*5+j; } } for (i=0;i<4;i++) { for (j=0;j<5;j++) { printf(" %2d",p[i][j]); } printf("\n"); } for (i=0;i<4;i++) { free(p[i]); } free(p);}// 0 1 2 3 4// 5 6 7 8 9// 10 11 12 13 14// 15 16 17 18 19