Как правильно использовать указатели для вычисления среднего - PullRequest
0 голосов
/ 19 декабря 2018

Я хочу использовать avgs в качестве указателя, но как бы я изменил приведенный ниже код, чтобы использовать его правильно?Я вычисляю среднее значение массива int, учитывая начальный указатель и длину ..

int compute_average(int *avgs, int len) {
  int sum = 0;
  for (int i = 0; i < len; i++)
  sum += avgs[i];
  return (int)(sum / len);
}

Я пытался написать это так, но это не сработало правильно:

  do {sum += *avgs;} 
  while(*(avgs++)!='\0');

1 Ответ

0 голосов
/ 19 декабря 2018

Проверка того, что ваш указатель не указывает на \0 - это хорошо, когда вы работаете со строками.Здесь у вас есть массив целых и длина, поэтому вы не можете использовать точку назначения, чтобы прекратить увеличивать указатель.Вам нужно использовать этот len, как в вашем первом фрагменте, но вместо доступа к i-му элементу вашего массива вы все равно можете увеличить указатель.Как то так:

int compute_average(int *avgs, int len) {
  int sum = 0;
  for (int i = 0; i < len; i++)
    sum += *(avgs++);
  return (int)(sum / len);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...