Есть ли разница междулюбая разница между foo (int * arr) и foo (int arr [])?
foo(int* arr) {}
и
foo(int arr[]){}
?
Благодаря
Есть ли разница междулюбая разница между foo (int * arr) и foo (int arr [])?
foo(int* arr) {}
и
foo(int arr[]){}
?
Благодаря
Нет, нет никакой разницы между ними.
Вы должны значений разыменования к первому ...
i ....... думаю –
nope. ну это зависит, вы можете разыграть второй, если хотите: '* (array + 3)' то же самое, что и 'указатель [3]'. – BlackBear
Ну, у меня есть две функции: int function (int arr []); int function2 (int * arr); Для тестирования у меня есть этот массив: int arr [5] = {1,1,1,1,1}; В Visual Studio 2010 я могу это сделать: функция (обр.); функция2 (обр.); Несмотря на то, что я не передавал динамически выделенный массив в функцию2, он все же позволял мне это делать. Почему это? И, выполняя тесты, обе функции имеют одинаковые результаты, поэтому, если разыменование происходит, это незначительно. – leetNightshade
Семантический то же самое, но для внешнего программатора, то проще и немедленным, чтобы понять: вторая функция принимает массив в качестве аргумента. Это не могло быть столь же непосредственным для первого.
Нет никакой разницы для компилятора C. Существует разница для программиста, который читает код, хотя.
Здесь обр является указателем на целое число (возможно, для возврата результата из функции):
foo(int* arr) {}
Здесь обр указатель на первое целое число в массиве (возможно, для передачи списка чисел в и/или из функции):
foo(int arr[]) {}
Кроме того, указав тип возвращаемого значения функции поможет.
Wow - много вопросов этого типа сегодня! – Sadique
Связанный, но новее, вопрос: http://stackoverflow.com/questions/5573310/difference-between-passing-array-and-array-pointer-into-function-in-c – jogojapan