Разница между int [] и int * в качестве аргументов функции - PullRequest
4 голосов
/ 08 декабря 2011

Это вопрос интервью:

В чем разница между int [] и int*, все они являются входными аргументами функции.

f(int a[] , int* b)

Мои ответы:

Для f() они имеют одинаковые функции. Первый - это начальная позиция первого элемента в a[].

Второй указывает на int.

Но как отличить их друг от друга, не передавая другие аргументы?

Ответы [ 2 ]

12 голосов
/ 08 декабря 2011

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

6 голосов
/ 08 декабря 2011

В контексте аргументов функции они идентичны. Все следующие точно одинаковы:

f(int a[], int *b)
f(int a[], int b[])
f(int *a, int *b)
f(int *a, int b[])

Вы не можете различить их, не передав дополнительную информацию.

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