码迷,mamicode.com
首页 > 其他好文 > 详细

二级指针的3种内存模型

时间:2014-11-08 13:42:03      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:c编程   二维数组   指针   内存   

二级指针的内存模型

二级指针的第一种内存模型

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种内存模型

标签:c编程   二维数组   指针   内存   

原文地址:http://blog.csdn.net/caiyaodeng/article/details/40920011

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!