Это вопрос интервью:
В чем разница между int [] и int*, все они являются входными аргументами функции.
int []
int*
f(int a[] , int* b)
Мои ответы:
Для f() они имеют одинаковые функции. Первый - это начальная позиция первого элемента в a[].
f()
a[]
Второй указывает на int.
int
Но как отличить их друг от друга, не передавая другие аргументы?
Как параметры функции, два типа в точности совпадают, int [] переписывается в int *, и вы не можете различить их. Многие вопросы в StackOverflow охватывают эту тему, и c-faq даже имеет специальный раздел для указателей и массивов (как аргументов или нет). Взгляните на это.
int *
В контексте аргументов функции они идентичны. Все следующие точно одинаковы:
f(int a[], int *b) f(int a[], int b[]) f(int *a, int *b) f(int *a, int b[])
Вы не можете различить их, не передав дополнительную информацию.