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

© 闪电侠 中级黑马   /  2015-7-10 22:58  /  727 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 闪电侠 于 2015-7-10 23:00 编辑

sizeof可以计算一个变量或一种类型所占用的存储字节数,比如:
  1. int nums[10]={};
  2. sizeof(nums);
复制代码
其结果为10 * 4 = 40

但是当把这个数组传入一个函数的时候:
  1. void test(int nums[] ){
  2. int n = sizeof(nums);
  3. }
复制代码
结果就变成了8
为什么会这样呢???

其实原因很简单,因为不管 函数的形参是 int nums[] 还是 int nums[10] 还是 int *nums,最终传入的仅仅只是数组的首地址,而在64位编译器中地址占8个字节。

1 个回复

倒序浏览
test 方法传递的是一个数组 属于地址传递   也就是说传递的是一个 指针, 所有类型的指针都是8个字节
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马