将数组作为参数传递,其大小放在方括号内

sch*_*hul 4 c arrays

以这种方式定义功能是否合法或有帮助?

void f(int arr[ARR_SIZE])
Run Code Online (Sandbox Code Playgroud)

Bat*_*eba 6

这是合法的(假设它ARR_SIZE是一个正整数),并且可能是一个有用的注释,尽管看起来似乎是虚假的承诺,但却令人困惑。总而言之,我不会使用它。

并不意味着arr是该尺寸的阵列:arr静止int*(由于指针衰减)和所有尺寸信息将丢失。

那就好写了

void f(int* arr, size_t n)
Run Code Online (Sandbox Code Playgroud)

f(arr, ARR_SIZE)主叫网站,或者f(arr, sizeof(arr)/sizeof(arr[0]))如果非腐朽型arr可用。

  • 我个人很喜欢* empty *括号,至少表示我期望指向某个数组的指针,而相比之下,我使用指针语法来表示指向单个对象的指针。 (2认同)