C++

zerbo1000
perchè qui devo mettere & per definire la variabile g nella funzione poli_read all inizio del programma ?

é legato col fatto che l'array è essostesso un array puntatore cioè dinamico? non capisco cosa cambiarebbe se non metto &

double *poli_read(int &g)
{
  double *p;

  cout << "Grado del polinomio: ";
  cin >> g;
  cout << "Coefficienti:\n";
  p=new double[g+1];
  for(int i1=0;i1<=g;i1++)
    cin >> p[i1];
  return p;
}


premetto che il programma aveva questa parte all inizio dove "g" era gia apparso:

using namespace std;

void poli_print(double *p, int g)
{
  for(int i1=0;i1<=g;i1++)
  cout << p[i1] << " ";
  cout << endl;
}

Risposte
Nosba
Allora.. ti consiglio di andare a leggere ed imparare i concetti di:
-Puntatore (http://www.dsi.unive.it/~labprog/lezion ... ione6.html);
-Reference (https://www.italiancpp.org/2013/08/23/p ... ivi-senza/);
-Passaggio di parametri per valore e riferimento (https://www.html.it/pag/15499/parametri ... ferimento/);

Questi tre argomenti sono parte della base fondamentale di conoscenze che devi avere prima ancora di iniziare a scrivere un programma che usa funzioni come quelle che hai descritto.

Detto ciò nella funzione che chiama poli_read tu dovrai creare una variabile intera e passarla alla funzione:
....
int var;
double *array;
array = poli_read(var);
...
delete[] array; // per evitare memory leak


ora subito dopo la chiamata a poli_read dentro alla variabile g avrai il valore della lunghezza dell'array stesso.

P.S. Cercando dei tutorial in inglese si possono trovare cose molto più valide di quelle che io ti ho proposto nei link.

zerbo1000
continuo a non capire le differenze tra * e & non hai qualche link con molto esempi che capisco meglio con quello che con le parole? grazie mille

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.