C的二维数组理解指针以及存储的方式

xiaoxiao2021-02-28  54

int testDoubleRow(){ int row=2; int cow=5; int i,j; char ** doub=(char **)malloc(row*sizeof(char*)); doub[0]=(char *)malloc(cow*sizeof(char)); doub[1]=(char *)malloc(cow*sizeof(char)); doub[0][1]='a'; doub[0][2]='b'; doub[0][3]='c'; doub[0][4]='d'; doub[0][0]='e'; doub[1][0]='A'; doub[1][1]='B'; doub[1][2]='C'; doub[1][3]='D'; doub[1][4]='E'; for(i=0;i<row;i++){ for(j=0;j<cow;j++){ printf("%u\n",&doub[i][j]); } } printf("char0 location is %u\n",doub[0]); printf("char1 location is %u\n",doub[1]); free(doub[0]); free(doub[1]); free(doub); return 1; }

根据打印的数据,理解数组的数据存储方式以及二维数组的数据存储是很直观的,可以看出来双重指针代表的地址是[0][0]元素的存储地址,然后doub[0] 开始往后排,第一列与第二列的地址差了几个 ,,所以理解指针,要从物理地址的方向上理解,二维指针表示指向的是两个地址 然后两个地址同时指向了不同的两列数字

转载请注明原文地址: https://www.6miu.com/read-80392.html

最新回复(0)