二级指针的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]


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值