2011-03-30 2 views

ответ

10

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

-1

Вы должны значений разыменования к первому ...

+0

i ....... думаю –

+0

nope. ну это зависит, вы можете разыграть второй, если хотите: '* (array + 3)' то же самое, что и 'указатель [3]'. – BlackBear

+0

Ну, у меня есть две функции: int function (int arr []); int function2 (int * arr); Для тестирования у меня есть этот массив: int arr [5] = {1,1,1,1,1}; В Visual Studio 2010 я могу это сделать: функция (обр.); функция2 (обр.); Несмотря на то, что я не передавал динамически выделенный массив в функцию2, он все же позволял мне это делать. Почему это? И, выполняя тесты, обе функции имеют одинаковые результаты, поэтому, если разыменование происходит, это незначительно. – leetNightshade

1

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

3

Нет никакой разницы для компилятора C. Существует разница для программиста, который читает код, хотя.

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

foo(int* arr) {} 

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

foo(int arr[]) {} 

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

Смежные вопросы