黑马程序员技术交流社区

标题: 请教一下调用自定义函数求数组长度的问题 [打印本页]

作者: 丶信步沧桑    时间: 2015-10-17 21:52
标题: 请教一下调用自定义函数求数组长度的问题
本帖最后由 丶信步沧桑 于 2015-10-17 21:55 编辑

自定一个函数并调用,求数组长度.

#include <stdio.h>



   
    void d(int a[]){
        
        
        int len;
        
        len=sizeof(a)/sizeof(int);
        
        printf("len=%d\n",len);
        
    }
   
        int main(){
            
            int b[]={1,2,3,4,5,6,7,8,9};
            
            d(b);
            
        
        
        
   
    return 0;
}

输出结果是2..
为什么,应该怎么写?
作者: wx_iguzbFUf    时间: 2015-10-17 21:59
66666666666
作者: jy00889669    时间: 2015-10-18 02:09
没看到数组,你真快
作者: hulk374    时间: 2015-10-18 07:46
  len=sizeof(a)/sizeof(int);      sizeof(a)=8,   sizeof(int)=4,这就是为什么是2了
作者: shengping110    时间: 2015-10-19 15:53
大神   嫁给我吧
作者: 就是看看132    时间: 2015-10-29 22:36
同问,困扰我好久了
作者: 就是看看132    时间: 2015-11-7 22:57
看来还没解决呢//...
作者: wh8817221    时间: 2015-11-7 23:06
因为你调用函数的时候实参传递过去的是这个函数地址,地址在内存中分配的空间是8个字节,所以sizeof(a)实际是地址的字节数,也就是8个字节,而sizeof(int)则是int类型在当前环境下占用的字节数,int类型在32位和64位都是4个字节,所以len=sizeof(a)/sizeof(int)=8/4=2;  
作者: chensc    时间: 2015-11-8 13:52
学习学习!
作者: black747521    时间: 2015-11-8 14:09
当然是2,八楼正解




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