Я пытаюсь передать массив DMA и его размер в качестве аргумента, но выдает ошибку - PullRequest
2 голосов
/ 28 мая 2020

Я пытаюсь передать динамический c массив, выделенный памяти, и его размер функции «sum», но он дает разрешающую ошибку, что мне делать?

1 Ответ

0 голосов
/ 28 мая 2020

Ваш код, вероятно, должен выглядеть следующим образом (Linux Ubuntu + g cc):

#include <iostream>

using namespace std;

int sum(int n[], int m)
{
  int s=0;
  for(int z=0; z<m; z++)
  {
    cout<<"\n array["<<z<<"]= "<<n[z]<<"\n";
    s+=n[z];
   }
   return s;
}

int main()
{
  int *n,m;
  cout<<"enter the size of array = ";             
  cin>>m;
  n=new int[m];
  for(int i=0; i<m; i++)
  {
    cout<<"\n enter array["<<i+1<<"] value = ";
    cin>>n[i];
    cout<<"\n";
  }
  int s = sum(n, m);
  cout<<"s="<<s<<endl;
  return 0;
}

Нет смысла выделять размер массива m динамически. Это обычная переменная int , которую можно инициализировать как

cin>>m;

. Вы также можете записать прототип sum в форме

int sum(int * n, int m)

Это еще один способ передачи одномерного массива в качестве параметра функции.

Честно говоря, эти вопросы являются самыми основами языка. Вам, вероятно, следует прочитать что-то вроде Dynami c распределение памяти / динамическое c массивы о динамике c выделение памяти и динамическое c массивы и простые случаи std :: cin Использование о простейших случаях использования std :: cin в C ++.

...