【C语言基础】C语⾔中⼆维数组作为函数参数来传递的三种⽅法
指针数组和数组指针的区别
比如:int *a[5]是指针数组,int (*a)[5]是数组指针,前者表示一个数组,数组元素都是指向int型变量的指针,后者表示一个指针,该指针指向一个int型有5个元素的数组。
第一个a是个数组名,里面保存的是int指针。
第二个a是个指针名,它指向一个包含5个数据的int数组。
C语⾔中⼆维数组作为函数参数来传递的三种⽅法
c语⾔中经常需要通过函数传递⼆维数组,有三种⽅法可以实现,如下:
#include <stdio.h>
//⽅法⼀,形参给出第⼆维的长度。
void func(int n, char str[ ][5] )
//⽅法⼆,形参声明为指向数组的指针。(数组指针)
void func(int n, char (*str)[5] )
{
int i;
for(i = 0; i < n; i++)
printf("/nstr[%d] = %s/n", i, str[i]);
}
void main()
{
char* p[3];
char str[][5] = {"abc","def","ghi"};
func(3, str);
}
⽅法三,形参声明为指针的指针。
例如:
#include <stdio.h>
void func(int n, char **str)
{
int i;
for(i = 0; i < n; i++)
printf("/nstr[%d] = %s/n", i, str[i]);
}
void main()
{
char* p[3];
char str[][5] = {"abc","def","ghi"};
p[0] = &str[0][0];
p[1] = str[1];
p[2] = str[2];
func(3, p);
}
注意:第三种传参⽅式说明:在函数中使⽤传参过来的⼆维数组(指针)进⾏数组取值的时候不能使⽤(array[i][j])这种形式来取值。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具