Передача аргумента массива в функцию

При вызове функции

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] указывает на одиннадцатый (!) индекс массива из десяти элементов.

Другие вопросы по тегам