Вопрос C - Использование [] вместо *? - PullRequest
0 голосов
/ 25 июля 2011

В C, есть ли разница между следующими объявлениями:

float DoSomething( const float arr[] );

Vs.

float DoSomething( const float* arr );

Один предпочтительнее другого?

Ответы [ 3 ]

8 голосов
/ 25 июля 2011

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

Я думаю, что использование синтаксиса массива немного понятнее, оно дает подсказку, что это массив, а не просто указатель на один объект.

Существует довольно подробное описание указателей и массивов по адресу http://www.c -faq.com / aryptr / index.html .

1 голос
/ 25 июля 2011

Нет разницы из-за неявных преобразований указателей для типов массивов при передаче в качестве аргументов функциям.

Кроме того, когда вы используете значение arr в первой версии DoSomethingв котором используется синтаксис массива, значение arr снова будет неявно преобразовано в указатель, если он используется сам по себе в правой части оператора присваивания или при использовании с оператором доступа к массиву [].1007 *

0 голосов
/ 25 июля 2011

Каждый массив может быть представлен как указатель, но не каждый указатель может быть представлен как массив.

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