View Full Version : [C++] passaggio di array dinamici a function
Kesslers
03-05-2010, 13:15
Buongiorno a tutti,
ho difficoltà con il passaggio di una matrice allocata dinamicamente ad una semplice function che per il momento si limita a stampare a schermo il contenuto della matrice. Nel main ho allocato dinamicamente l'array, ma gli errori di compilazione saltano fuori nella function, di cui vi allego il semplice listato:
void stampa(int matrice[][],int n, int m)
{
int i, j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
cout << matrice[i][j] << endl;
}
Qualcuno può suggerirmi come correggere il codice?
Grazie mille intanto e buona giornata!
Teo@Unix
03-05-2010, 13:50
però è meglio che posti anche gli errori, così è più facile aiutarti.
non è che è un problema su come passi la matrice?
Io farei così con N definito:
void stampa(int matrice[][N],int n, int m)
Kesslers
03-05-2010, 14:48
è vero..riporto il listato completo:
#include<iostream>
using namespace std;
void stampa(int matrice[][], int n, int m);
int main(int argc, char* argv[])
{
int n, m, i, j;
cout << "No. of rows:" << endl; cin >> n;
cout << "No. of columns:" << endl; cin >> m;
int** p = NULL;
p = new int*[n];
for(i=0;i<n;i++)
p[i] = new int[m];
int a = 0;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
p[i][j] = a++;
stampa(p,n,m);
for(i=0;i<n;i++)
delete((int*)p[i]);
delete [] p;
p = NULL;
return 0;
}
void stampa(int matrice[][],int n, int m)
{
int i, j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
cout << matrice[i][j] << endl;
}
E questi sono gli errori del compilatore:
Compiling...
main.cpp
C:\array\main.cpp(4) : error C2087: '<Unknown>' : missing subscript
C:\array\main.cpp(27) : error C2664: 'stampa' : cannot convert parameter 1 from 'int ** ' to 'int [][1]'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
C:\array\main.cpp(38) : error C2087: '<Unknown>' : missing subscript
Error executing cl.exe.
main.obj - 3 error(s), 0 warning(s)
Grazie di nuovo!
cannot convert parameter 1 from 'int ** ' to 'int [][1]'
Quindi usa int ** al posto di int [][]
Kesslers
03-05-2010, 19:14
Wow grandiosi, funziona! Era un problema di puntatori. Grazie mille!!
Ciao ciao.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.