满意答案
//二维例如:
char strings[][10]={"hello","world"};
viod myprint(char (*str)[10])
{
printf("%s\n",str[0]);
//输出hello,str[1],步长移动单位是10
//推导出,指针移动为str+n*10(宽度)
}
//三维:建一个4行2列的char[10]
char strings[4][2][10]={"hello","world","xufeng"};
//方式1
viod myprint(char (*str)[2][10])
{
printf("%s\n",str[0][1]);
//输出world,
//推导出,指针移动为str+0*2*10+1*10(宽度)
}
方式2
viod myprint(char ((*str)[10])[2])
{
printf("%s\n",(str[1])[0]);
//输出world,
//推导出,指针移动为(str+1*10)+0*2*10(宽度)
}
总结,参数省略最高维步长不写。其实我也厌恶,这种坑。但细想一想。它真的是什么都没做,只是计算步长而已,简单到差点我都想不到。希望对你有帮助
00分享举报