C: При передаче указателя с массивом в функцию возникает ошибка времени выполнения.Зачем? - PullRequest
0 голосов
/ 24 февраля 2019
int add_up (int *a, int num_elements);

int main() 
{
  int orders[5] = {100, 220, 37, 16, 98};
  int *p;
  p=&orders[0];

  printf("Total orders is %d\n", add_up(*p, 5)); 

здесь Если я передам указатель, в чем проблема?Как указатель будет указывать на нет.Значение 100100 - это значение типа int, которое перейдет к int * a.И программа должна идти хорошо, верно?Изменить 1: Если я приведу здесь p вместо * p, то это будет адрес orders [0], а не значение 100, верно?Но функция int * a хочет значение 100 правильно.Поправьте меня, если я ошибаюсь в этой концепции и спасибо.

  return 0;
}

int add_up (int *a, int num_elements) 
{
  int total = 0;
  int k;

  for (k = 0; k < num_elements; k++) 
  {
    total += a[k];
  }
  return (total);
} 

1 Ответ

0 голосов
/ 24 февраля 2019

Замените ваш код следующим:

#include <stdio.h>
#include <stdlib.h>

int add_up (int *a, int num_elements);

int main() 
{
  int orders[5] = {100, 220, 37, 16, 98};
  int *p;
  p=&orders[0];

  printf("Total orders is %d\n", add_up(p, 5)); 
  return 0;
}

int add_up (int *a, int num_elements) 
{
  int total = 0;
  int k;

  for (k = 0; k < num_elements; k++) 
  {
    total += a[k];
  }
  return (total);
}

Вы забыли включить 2 заголовка и add_up(*p, 5) и удалите *.

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