开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2069|回复: 17
收起左侧

[讨论] 之前有人跟我掰扯c++ sizeof(数组参数)的问题

[复制链接]

结帖率:100% (9/9)
发表于 2022-6-23 17:33:11 | 显示全部楼层 |阅读模式   广西壮族自治区崇左市
QQ截图20220623172809.png

[C++] 纯文本查看 复制代码
int test1(char* arg)
{
    return sizeof(arg);
}
int test2(char arg[])
{
    return sizeof(arg);
}
void test()
{
    char arg[100];
    int a = test1(arg);
    int b = test2(arg);
    int c = sizeof(arg);
}


abc分别是多少?
以前居然有人跟我掰扯说a和b都是100...
你觉得呢? abc分别是多少? c是100那不用说了, 掰扯的点就是a和b了


单选投票, 共有 20 人参与投票 查看投票参与人

投票已经结束

10.00% (2)
30.00% (6)
10.00% (2)
50.00% (10)
您所在的用户组没有投票权限

点评

或者下次在遇到此类事情,直接用c++证明给他看,让他好好看看,他的脑子是不是被驴踢了   安徽省合肥市  发表于 2022-6-25 13:33
有些人自以为是惯了,管他那么多干嘛,反正自己是对的,管他说什么呢,因为总有一天他会发现的   安徽省合肥市  发表于 2022-6-25 13:30
发表于 2022-11-23 01:05:20 | 显示全部楼层   广东省河源市
不同的编译器也可能导致不同的结果
回复

使用道具 举报

结帖率:100% (9/9)

签到天数: 4 天

 楼主| 发表于 2022-6-25 20:52:44 | 显示全部楼层   广西壮族自治区崇左市
气质征服一切 发表于 2022-6-25 20:47
放宽心吧,我前几天不也被人qi到了吗,还发了个帖子

害, 问答区的问题挺多的, 我都不去问答区混了, 偶尔看到我能回答的就回答一下
现在我都不给源码的, 只给思路, 要是能看懂, 那就是学到了, 要是看不懂或者不想看懂, 那就找其他人吧...
现在佛系**誉, 一个月能涨个10点8点的都算不错了...
回复

使用道具 举报

结帖率:97% (67/69)

签到天数: 3 天

发表于 2022-6-25 20:47:01 | 显示全部楼层   安徽省合肥市
福仔 发表于 2022-6-25 19:17
他只愿意相信自己相信的, 他只看到他运行没出错, 我都截图给他看了
额, 也有可能是我截图鼠标放在sizeof( ...

放宽心吧,我前几天不也被人qi到了吗,还发了个帖子

点评

害, 问答区的问题挺多的, 我都不去问答区混了, 偶尔看到我能回答的就回答一下 现在我都不给源码的, 只给思路, 要是能看懂, 那就是学到了, 要是看不懂或者不想看懂, 那就找其他人吧... 现在佛系**誉, 一个月能涨个10   广西壮族自治区崇左市  详情 回复 发表于 2022-6-25 20:52
回复

使用道具 举报

结帖率:100% (9/9)

签到天数: 4 天

 楼主| 发表于 2022-6-25 19:17:04 | 显示全部楼层   广西壮族自治区崇左市

他只愿意相信自己相信的, 他只看到他运行没出错, 我都截图给他看了
额, 也有可能是我截图鼠标放在sizeof() 上, 他不知道显示的值就是编译后的值....
他还是认为能行, 那我还有什么好说的....
回复

使用道具 举报

签到天数: 2 天

发表于 2022-6-24 15:32:37 | 显示全部楼层   内蒙古自治区鄂尔多斯市
sizeof是编译期计算的。好像是。得能看到类型声明才能计算长度。一般很少传参过去。然后在函数里取sizeof吧。这种用法本身应该就有问题。

点评

预编译的, 都不用编译代码都能看到那几个的尺寸了, 在IDE里把鼠标放到sizeof上就显示尺寸了   广西壮族自治区崇左市  发表于 2022-6-24 20:31
回复

使用道具 举报

结帖率:97% (67/69)

签到天数: 3 天

发表于 2022-6-24 13:30:09 | 显示全部楼层   安徽省合肥市
我直接来张图镇楼吧

123.png

点评

他只愿意相信自己相信的, 他只看到他运行没出错, 我都截图给他看了 额, 也有可能是我截图鼠标放在sizeof() 上, 他不知道显示的值就是编译后的值.... 他还是认为能行, 那我还有什么好说的....   广西壮族自治区崇左市  详情 回复 发表于 2022-6-25 19:17
也是我的问题, 毕竟在易语言圈子里问了其他圈子的知识....   广西壮族自治区崇左市  发表于 2022-6-24 20:32
但是你看投票结果, 还是有很多人认为sizeof() 能获取到数组参数的尺寸....   广西壮族自治区崇左市  发表于 2022-6-24 20:30
回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 5 天

发表于 2022-6-23 18:52:42 | 显示全部楼层   广东省广州市
32位里a=b=4,数组名做函数参数的时候退化成指针了,做参数的时候char* a和char a[]是一样的,64位里a=b=8

点评

对, 可还是有人认为sizeof(参数数组)能得到长度, 怎么说他都说他运行没问题, 搞得我直接退群眼不见心不烦了....   广西壮族自治区崇左市  发表于 2022-6-23 19:00
回复

使用道具 举报

签到天数: 7 天

发表于 2022-6-23 18:52:16 | 显示全部楼层   重庆市重庆市
char* char[] 传递的都是指针 取到的都是指针的大小

点评

对, 数组因为尺寸大, 所以作为参数的时候永远都是传递指针, 而不是把整个数组传递过去, 所以在函数里的数组参数就是一个指针   广西壮族自治区崇左市  发表于 2022-6-23 19:08
回复

使用道具 举报

结帖率:83% (39/47)

签到天数: 7 天

发表于 2022-6-23 18:27:06 | 显示全部楼层   福建省宁德市
我觉得是第二个选项
回复

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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