在函数参数中获取数组输入时为什么要使用指针

问题描述 投票:0回答:1

为什么在某些情况下,比如在 Leetcode 中,如果一个函数想要接受一个数组输入作为参数,它会接受一个指针而不是像这样的“int arr[]”?拿它作为指针的理由是什么,拿它作为指针有什么好处?

为什么是这个:

int (int *arr, int size)

c function pointers
1个回答
0
投票

参数不能是数组。

因此我们传递一个指向数组第一个元素的指针(常见)

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 );
© www.soinside.com 2019 - 2024. All rights reserved.