#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 回答
onemoo
TA贡献883条经验 获得超454个赞
因为声明在函数参数中的数组其实是指针,也就是说 a 是 double* 类型。
a[0] 得到的还是double类型,所以 sizeof a / sizeof a[0] 就是 sizeof(double) / sizeof(double)
- 2 回答
- 1 关注
- 1664 浏览
添加回答
举报
0/150
提交
取消