黑马程序员技术交流社区

标题: sizeof使用中的注意点 [打印本页]

作者: 闪电侠    时间: 2015-7-10 22:58
标题: sizeof使用中的注意点
本帖最后由 闪电侠 于 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个字节。

作者: huguozhang    时间: 2015-7-11 00:30
test 方法传递的是一个数组 属于地址传递   也就是说传递的是一个 指针, 所有类型的指针都是8个字节




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2