急,求大神!C语言中sizeof问题

#include <stdio.h>  

//输出数组的长度 
int arr_str(double a[]) {
    int len=sizeof(a)/sizeof(a[0]);  //1  ??????为何输出1呢   为何不是数组的长度 
    return len;
}

int main(){
    double arr[]={1.78, 1.77, 1.82, 1.79, 1.85, 1.75, 1.86, 1.77, 1.81, 1.80};
    printf("arr_str里面的数组长度为%d\n",arr_str(arr));
    int length = sizeof(arr)/sizeof(arr[0]);
    printf("main里面的数组长度为%d\n",length);   //正常输出, 10
	return 0;
}

为何用自定义函数来求数组的长度会显示不正常呢,为1,而在main中就显示正常。用的编辑器是dev-c++,64位操作系统。输出结果为:

http://img.mukewang.com/5697066f0001435d02980067.jpg

如何解决?

简单OK
浏览 1667回答 2
2回答

留得枯荷听雨声lyx

数组名其实就是一个指针,传递到函数的时候,只是传递了第一个元素

onemoo

因为声明在函数参数中的数组其实是指针,也就是说 a 是 double* 类型。a[0] 得到的还是double类型,所以 sizeof a / sizeof a[0] 就是 sizeof(double) / sizeof(double)
打开App,查看更多内容
随时随地看视频慕课网APP