以这种方式定义功能是否合法或有帮助?
void f(int arr[ARR_SIZE])
Run Code Online (Sandbox Code Playgroud)
这是合法的(假设它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可用。