VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 122|回复: 1

[已解决]sizeof打印数组问题

[复制链接]
54_avatar_middle
最佳答案
0 
在线会员 发表于 2020-8-10 17:49:12 | 显示全部楼层 |阅读模式
相同数组 打印的大小不同 什么原因
最佳答案
10_avatar_small
2020-8-10 18:25:17
本帖最后由 he_minghao007 于 2020-8-10 18:44 编辑

数组作为实参传递给函数时会退化成指针,指针的大小为4个字节(32位程序)。在函数外部也就是main函数中调用sizeof(数组名)编译器在编译阶段就可能计算出数组的大小,而在函数里面,编译器不知道你传递的是什么类型,只能将参数当然指针来对待。虽然你的实参与形参名字都一样,但它们的地址是不一样的,形参char a[]相当于char* a,这是一个新的变量,它指向外面的 char a[]数组的首地址。

相同的数组打印的大小不同

相同的数组打印的大小不同




上一篇:求助大写转换问题
下一篇:析构函数的简单小问题
10_avatar_middle
最佳答案
3 
在线会员 发表于 2020-8-10 18:25:17 | 显示全部楼层    本楼为最佳答案   
bestAnswer
本帖最后由 he_minghao007 于 2020-8-10 18:44 编辑

数组作为实参传递给函数时会退化成指针,指针的大小为4个字节(32位程序)。在函数外部也就是main函数中调用sizeof(数组名)编译器在编译阶段就可能计算出数组的大小,而在函数里面,编译器不知道你传递的是什么类型,只能将参数当然指针来对待。虽然你的实参与形参名字都一样,但它们的地址是不一样的,形参char a[]相当于char* a,这是一个新的变量,它指向外面的 char a[]数组的首地址。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-9-23 18:47

Powered by CcTry.CoM

© 2009-2020 cctry.com

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