Есть ли существенная разница между ними? Для меня это выглядит так же ... и по некоторым данным, кажется, прибегая к помощи такой же, как well..Just Wanna подтвердить это здесь ..В чем разница с указателем и массивом в качестве параметров?
void getAnything(int arr [])
{
arr[0] = 2;
}
против
void getAnything(int *arr)
{
arr[0] = 2;
}
главный
int main()
{
int arr [1];
getAnything(arr);
}
Это, вероятно, дубликат. В качестве объявления параметра (и * only * в качестве объявления параметра) 'int arr []' действительно означает 'int * arr'. Нет параметров типа массива. Выражение типа массива в большинстве контекстов неявно преобразуется в указатель на его первый элемент. Вот почему 'sizeof arr' внутри функции дает вам размер указателя, а не размер массива; вы должны сами это отслеживать. Прочтите раздел 6 [comp.lang.c FAQ] (http://www.c-faq.com/); это относится к C++, а также к C. –
Связано: http://stackoverflow.com/questions/12127625/array-syntax-vs-pointer-syntax-in-c-function-parameters –
Вы могли бы просто скомпилировать код и компилятор заявил бы, что функции одинаковы, поэтому была бы испущена ошибка. http://ideone.com/xrtFYW – PaulMcKenzie