c - 将数组作为参数传递,其大小在括号内
问题描述
以这种方式定义函数是否合法或有任何帮助?
void f(int arr[ARR_SIZE])
解决方案
它是合法的(假设它ARR_SIZE
是一个正整数类型),并且可能是一个有用的注释,尽管它似乎做出了错误的承诺而令人困惑。总的来说,我不会使用它。
这并不意味着它arr
是那个大小的数组:arr
仍然是一个int*
(由于指针衰减)并且所有大小信息都丢失了。
比写要好得多
void f(int* arr, size_t n)
在f(arr, ARR_SIZE)
调用站点,或者f(arr, sizeof(arr)/sizeof(arr[0]))
如果非衰减类型arr
可用。
推荐阅读
- selenium - 抓取材料的单位
- ruby-on-rails - Rails如何将link_to用于外部网站并使用块?
- javascript - 是否可以通过 JavaScript 获取一种语言中所有单词的列表?
- node.js - 如何使用 Google 云功能从 Firebase 实时数据库中读取值?
- node.js - 本地运行的 Firebase 函数未使用 Firebase Admin SDK 进行身份验证
- design-patterns - 策略模式 Java
- three.js - 是否可以在threejs中命名旋转/关节以及如何设置它们?
- python - Tkinter 条目返回 ValueError: invalid literal for int() with base 10: ''
- filenames - Flutter:获取文件的文件名
- python - 如何在 ViewClass 中使用请求