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

来源:互联网 发布:阿里云主机备案 编辑:程序博客网 时间:2024/05/21 08:02
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] 开始往后排,第一列与第二列的地址差了几个 ,,所以理解指针,要从物理地址的方向上理解,二维指针表示指向的是两个地址 然后两个地址同时指向了不同的两列数字

阅读全文
1 0
原创粉丝点击