Передача аргумента массива в функцию
При вызове функции
int sum_array(int array[], int arr_length)
{
int sum = 0;
while(--arr_length >= 0)
sum += array[arr_length];
return sum;
}
в основной функции
int main()
{
int b[10];
...
total = sum_array(b,10);
...
}
зачем передавать аргумент b
не b[]
как sum_array(b[],10)
?
ПРИМЕЧАНИЕ: я не знаю указателей.
3 ответа
Решение
В C массивы передаются как указатель на первый элемент. Тип b
это массив.
При прохождении b
вы фактически передаете указатель на первый элемент массива.
- почему передача параметра b, а не b[] в виде sum_array(b[],10)
Краткий ответ: потому что b[]
неверный синтаксис
Вот
int b[10];
переменная b
объявлен int [10]
тип переменной.
Поскольку функции принимают идентификаторы в качестве параметров, а не типов, вы должны передать идентификатор функции. Идентификатор b
,
- ПРИМЕЧАНИЕ: я не знаю указателей.
Это не имеет ничего общего с указателями.
Функция ожидает указатель на массив int, поэтому вам нужно передать указатель на начало массива. b[10]
указывает на одиннадцатый (!) индекс массива из десяти элементов.