为什么在某些情况下,比如在 Leetcode 中,如果一个函数想要接受一个数组输入作为参数,它会接受一个指针而不是像这样的“int arr[]”?拿它作为指针的理由是什么,拿它作为指针有什么好处?
为什么是这个:
int (int *arr, int size)
?
参数不能是数组。
因此我们传递一个指向数组第一个元素的指针(常见)
void f( size_t n, int *p ) { // Sometimes written as `int p[]`.
for ( size_t i = 0; i < n; ++i ) {
printf( "%d\n", p[i] );
}
}
int a[ n ];
f( n, a ); // Same as `f( n, &(a[0]) );`
或指向数组本身的指针(不常见)。
void f( size_t n, int (*p)[ n ] ) {
for ( size_t i = 0; i < n; ++i ) {
printf( "%d\n", (*p)[i] );
}
}
int a[ n ];
f( n, &a );