首页 > 代码库 > 二级指针的3种内存模型
二级指针的3种内存模型
二级指针的内存模型
二级指针的第一种内存模型 |
Char*Accary [ ]={ “aaaaaa”, ”bbbbbb”, ”ccccccc” }; //接口形参使用方式 Intprintfarr(char**ArrayStr,int iNUm) { For(i =0; i<iNUm; i++) { Printf(“%s \n”, ArrayStr[i]); } } //调用方式 Printfarr(Accary, 3); |
二级指针的第二种内存模型 |
CharArray[10][30]={“aaaa”, “bbbb”, “cccccc”,}; //接口形参使用方式 Voidabc(char Arrary[30],4 ) { For(i=0; i<4; i++) { Printf(“%s \n”,Accary[i]); } } //调用方式 Printfarr(Array, 3); |
二级指针的第三钟内存模型 |
char**real = (char **)malloc(3*sizeof(char *)); for(int i=0; i<3; i++) { real[i]= (char *)malloc(30*sizeof(char)); } sprintf(real[0],"dbsiudaudhakdhjhba"); sprintf(real[1],"b"); printf("%s\n", real[1]); //接口形参使用方式 Intprintfarr(char**ArrayStr,int iNUm) { For(i =0; i<iNUm; i++) { Printf(“%s \n”, ArrayStr[i]); } } //调用方式 Printfarr(Accary, 3); |
形参写法的引申:
Voidstr(char abc[30]); voidstr(char abc[ ]);一维数组做形参,退化为指针 voidstr(char abc);手工加*,手工完成编译器任务 |
//针对第二种内存模型 Voidstr(char abc[30][60]); voidstr(char abc[ ][60]);二维数组做形参,退化为指针,60为指针步长 voidstr(char (*abc)[60]);手工加*,手工完成编译器任务,其实就是数组指针 |
等价关系
数组参数 等效指针参数 一维数组chara[ 30 ] ------------------------------->指针char× a 指针数组char × a [ 30]-------------------------------->指针的指针char× × a 二位数组chara[30 ][30]-------------------------------->数组的指针char(×a)[30] |
二级指针的3种内存模型