首页 > 解决方案 > 将数组作为参数传递,其大小在括号内

问题描述

以这种方式定义函数是否合法或有任何帮助?

void f(int arr[ARR_SIZE])

标签: carrays

解决方案


它是合法的(假设它ARR_SIZE是一个正整数类型),并且可能是一个有用的注释,尽管它似乎做出了错误的承诺而令人困惑。总的来说,我不会使用它。

并不意味着它arr是那个大小的数组:arr仍然一个int*(由于指针衰减)并且所有大小信息都丢失了。

比写要好得多

void f(int* arr, size_t n)

f(arr, ARR_SIZE)调用站点,或者f(arr, sizeof(arr)/sizeof(arr[0]))如果非衰减类型arr可用。


推荐阅读