二维数组 二级指针 参数传递
指针数组参数传递
二维数组不能作为二级指针参数进行传递,无法强制转换。即:
void fun(char **p);
char str[2][6] = {"hello", "world"};
fun(str);
这样的调用会出错。
但是指针可以转化为二级指针。如:
void fun(char **p);
char *str[6] = {"hello", "world"};
fun(str);
这样调用就OK。
数组指针参数传递
下面这种情况,调用会出错。
void func(int **p);
int ary[2][6];
func(ary);
这种情况下,二维数组不能转化为二级指针。进行如下修改。
void func(int (*p)[6]);
int ary[2][6];
func(ary);
这样调用正确。
通过上面的例子可以看出,二维数组可以转化为数组指针,指针数组可以转化为二级指针。二维数组名其实就是一个数组指针,指向的是数组,因此二维数组可以转化为数组指针。指针数组,是一个数组,数组元素的类型是指针,一个是指向指针,一直是指向数组,因为基本数据类型不是数组指针,因此不可以进行转化。而二级指针,是指向指针的指针,数组指针名是指针,指向数组元素,数组元素也是指针,因此数组指针是指向指针的指针,因此可以和二级指针进行转化。
上面的转化是针对默认转化来说的。
数组指针和指针数组对应的关系应该如下:
int ary[2][6];
int (*ary1)[6];
int *ary2[2];
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!