c++ - 数组作为函数参数错误查找数组的长度
问题描述
1. int minimum(int arr[]){
2.
3. int min,pos = 0;
4. min = arr[0];
5. int i;
6. for(i = 0;i<(sizeof(arr)/sizeof(*arr));i++){
7. if(arr[i]<min){
8. min = arr[i];
9. pos = i;
10. }
11. }
12. return arr[pos];
13. }
在第 6 行中,for 循环条件中的语句无法计算数组的大小......
解决方案
int minimum(int arr[])
编译时元素的数量是未知的,sizeof(arr)
不能赋值正确的值,它会赋值,sizeof(int *)
因为这是arr的类型
但在
void f()
{
int arr[3];
printf("%d\n", sizeof(arr)/sizeof(*arr));
}
arr的 sizeof在编译时是已知的
推荐阅读
- javascript - 如何使用按行到列选择的表格复选框写入 json 格式?
- django - 如何在提交我的用户注册表单时在用户详细信息数据库中识别和设置用户模型外键
- javascript - 如何一次从 RabbitMQ 获取队列数据
- java - 使用工作表 ID 从 Google 工作表中获取 JSON 格式的数据 - android
- tableau-api - 如何在不排除其他度量的情况下在度量/行上添加过滤器?
- python - 如何为具有离散对数步长的环条获取正确的刻度标签?
- python - 如何为 python 应用程序生成分发 - Py2App
- reactjs - 我在哪里可以找到流星 js 的插件?
- java - 生产者无法在微服务中向消费者发送成功消息
- android - NFC 前台调度无法正常工作