A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

昨天做了一下练习题“编写一个函数void strlink(char s[], char t[])将字符串t连接到字符串s的尾部”,函数中形参用了字符数组s[]和t[],实参也是两个数组。我忽然想到了之前做得一个习题“求一个数组中得最大值”,其中函数里也是将形参定义为一个数组,实参也是一个数组,但是系统发出警告让把形参的数组改为指针,这个问题有同学在我们论坛提出来过……那么问题来了,实参同样是数组,那什么情况下形参应该是指针,什么情况下形参是数组而且不报警呢?

评分

参与人数 1黑马币 +1 收起 理由
星河鹭起 + 1

查看全部评分

3 个回复

倒序浏览
没听懂啊哥们,,  实参是数组 形参是数组, 传过去不会有警告啊  我刚试了
回复 使用道具 举报
楼主你好,我也是新手。
你这样提问有些不准确,没有例子不好讨论。
我大概理解楼主的意思,解答如下:
形参是数组的时候不会报警,但是sizeof(数组名)就会报警,因为数组 当做形参的时候,会把数组当做指针变量来使用,指针变量的长度在32位编译器 和64位编译器上是不同的,所以,当你sizeof()的时候,会报警,提醒你这样做是不准确的。
回复 使用道具 举报
杨贺阳 发表于 2014-11-22 15:14
楼主你好,我也是新手。
你这样提问有些不准确,没有例子不好讨论。
我大概理解楼主的意思,解答如下:

明白了!非常感谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马