二维数组和二维指针的理解
二维数组
int edges[5][2] = { {1,2},{2,3},{3,4},{ 1,4 },{ 1,5 } };
下标只是表示偏移量,edges[0] 并不表示 一个指针,其实值为1 ;因此不能直接转化为二维指针来用;
二维数组的下标表示在其实地址上的偏移量,eg: i*n+j,因此可以转为一维指针来使用,然后通过偏移量去读取相应的值,和二维数组下标的含义一致

二维指针
二维指针表示指针的指针,因此edges[0] 表示的是一个地址,每个地址有指向存储数据的地址;
二维指针赋值的时候首先要申请指针数组,然后给每个数组在申请内存,和二维数组中下标的含义完全不一致。
int edges[5][2] = { {1,2},{2,3},{3,4},{ 1,4 },{ 1,5 } }; int** data = NULL; data = (int**)malloc(5 * sizeof(int*)); for (int i = 0; i < 5; i++) { data[i] = &(edges[i][0]); }

注意一下数据类型那一列
记录每天生活的点点滴滴,呵呵呵呵呵呵

浙公网安备 33010602011771号