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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© laotang013 中级黑马   /  2015-10-14 23:34  /  951 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//
//  main.c
//  返回一个整型数组的字节数
//
//  Created by all on 15/9/28.
//  Copyright © 2015年 all. All rights reserved.
//

#include <stdio.h>
int returnSizeofArr(int arr[])
{//数组作为函数的参数传递的是数组的地址,所以sizeof(arr)中的arr是数组中的第一个元素的地址
    //sizeof(arr)计算的是地址的字节数。
    arr[0]=10;
    return sizeof(arr);//因为传过来的是地址所以每次打印的值都是8个。
}
int main(int argc, const char * argv[]) {
    int arr[2];
    printf("占用的字节数 %d\n,arr[0]==%d\n",returnSizeofArr(arr),arr[0]);
    return 0;
}


1 个回复

倒序浏览
这个题目我见过,我也没做出来,
你定义的函数,就像你注释上写的,“return sizeof(arr);//因为传过来的是地址所以每次打印的值都是8个。”数组长度在数组定义的时候就应该定义好的,你这样直接传过来一个数组指针,其实就是打印的数组指针所占的8个字节。并不是数组所占的字节,所以你定义这个函数应该求不出来。我也不知道怎么求。但是如果直接在main函数中这样写的话,就可以求出来,不知道为什么。
也请大神们解答一下。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马