OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2407|回复: 3

C语言函数传参问题

[复制链接]

14

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
217
金钱
217
注册时间
2015-9-27
在线时间
27 小时
发表于 2016-11-17 17:18:25 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]void func1(char *p)
{
          ;
}
void func2(char p[])
{
        ;
}[/mw_shl_code]
上面这两个函数有什么不同吗?
函数的功能是用来接收一个字符串。

最佳答案

查看完整内容[请看2#楼]

在这种场景下其实这二者没有任何区别,“数组名作为函数参数会退化为指针”。(参考资料:《495个C语言问题》)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-11-17 17:18:26 | 显示全部楼层
在这种场景下其实这二者没有任何区别,“数组名作为函数参数会退化为指针”。(参考资料:《495个C语言问题》)
回复

使用道具 举报

7

主题

62

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2016-10-26
在线时间
58 小时
发表于 2016-11-17 17:29:13 | 显示全部楼层
不建议这样使用,因为没有传入长度,会容易造成溢出,建议增加一个形参,数组的名字就是数组的首地址,和指针用法一样的
回复

使用道具 举报

22

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
878
金钱
878
注册时间
2014-7-7
在线时间
311 小时
发表于 2016-11-17 17:34:46 | 显示全部楼层
邵少少 发表于 2016-11-17 17:29
不建议这样使用,因为没有传入长度,会容易造成溢出,建议增加一个形参,数组的名字就是数组的首地址,和指 ...

如果单纯是字符串,字符串有尾部识别,所以不需要,但是,我建议参数改为:
const char *pStr
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 08:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表