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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 丶信步沧桑 于 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..
为什么,应该怎么写?

评分

参与人数 4黑马币 +25 收起 理由
ywb1991325 + 5 很给力!
shengping110 + 5
就是看看132 + 10 很给力!
rzx + 5 好学生加油

查看全部评分

9 个回复

倒序浏览
66666666666
回复 使用道具 举报
没看到数组,你真快
回复 使用道具 举报
  len=sizeof(a)/sizeof(int);      sizeof(a)=8,   sizeof(int)=4,这就是为什么是2了
回复 使用道具 举报
大神   嫁给我吧
回复 使用道具 举报
同问,困扰我好久了
回复 使用道具 举报
看来还没解决呢//...
回复 使用道具 举报
因为你调用函数的时候实参传递过去的是这个函数地址,地址在内存中分配的空间是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:38
9#
学习学习!
回复 使用道具 举报
当然是2,八楼正解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马