какая разница между foo (int * arr) и foo (int arr [])? - PullRequest
4 голосов
/ 31 марта 2011

Есть ли разница между

foo(int* arr) {}

и

foo(int arr[]){}?

Спасибо

Ответы [ 4 ]

11 голосов
/ 31 марта 2011

Нет, между ними нет разницы.

4 голосов
/ 31 марта 2011

Нет разницы для компилятора C.Для программиста, который читает код, есть разница.

Здесь arr - указатель на целое число (возможно, для возврата результата из функции):

foo(int* arr) {}

Здесь,arr - указатель на первое целое число в массиве (возможно, для передачи списка чисел в и / или вне функции):

foo(int arr[]) {}

Также может помочь указание возвращаемого типа функции.

1 голос
/ 31 марта 2011

Семантика та же самая, но для внешнего программиста ее легче и быстрее понять: вторая функция принимает массив в качестве аргумента. Это не могло быть столь же непосредственным для первого.

0 голосов
/ 31 марта 2011

Вам придется разыменовать значения до первого ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...