为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
简单OK 2016-01-14 10:22:59
#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位操作系统。输出结果为:如何解决?
查看完整描述

2 回答

?
留得枯荷听雨声lyx

TA贡献51条经验 获得超16个赞

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

查看完整回答
1 反对 回复 2016-01-15
?
onemoo

TA贡献883条经验 获得超454个赞

因为声明在函数参数中的数组其实是指针,也就是说 a 是 double* 类型。

a[0] 得到的还是double类型,所以 sizeof a / sizeof a[0] 就是 sizeof(double) / sizeof(double)

查看完整回答
1 反对 回复 2016-01-14
  • 2 回答
  • 1 关注
  • 1664 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信