Ciao
scusate la banalità della domanda, ma in c++ è possibile dichiarare una funzione che ritorna un array?
se si come?
Grazie mille
ciao
Ciao
scusate la banalità della domanda, ma in c++ è possibile dichiarare una funzione che ritorna un array?
se si come?
Grazie mille
ciao
+ che l'array la funzione deve restituire il puntatore di quell'array
si ma mi dici come fare?non mi va bene passere il riferimento al vettore come parametro
Originariamente inviato da claudiosala80
si ma mi dici come fare?non mi va bene passere il riferimento al vettore come parametro
codice:#include <iostream> using namespace std; void vettore(int *,const int); //prototipo int main() { int a[3]; vettore(a,3); cout<<a[0]; system("PAUSE"); return 0; } void vettore(int *a,const int size) { for (int i=0;i<size;i++) a[i]=0; }
Se non ti va bene passare il vettore come parametro per riferimento, puoi utilizzare una funzione come questa:
Ciao.codice:#include <iostream> using namespace std; int *ritornaVettote(); int main() { int *mioVettore; /* Vettore che verrà restituito dalla funzione */ int i = 0; mioVettore = ritornaVettore(); while (mioVettore[i]) { cout << "Elemento " << (i+1) << ": " << mioVettote[i]; i++; } return 0; } int *ritornaVettore() { int *nuovo; int j = 0; nuovo = (int *) malloc(11 * sizeof(int)); for (j=0; j<10; j++) nuovo[j] = j; nuovo[10] = '\0'; return nuovo; }![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
mi sa che è meglio che vi posto il codice
for (int colore2=0; colore2<3; colore2++)
{
for (int x=0; x<DIM; x++)
{
if (colore2==0)
{
leggiVettore(vettoreTemporaneo, immagine);
}
else
{
leggiVettore(vettoreTemporaneo, immagine); RunLenghtDecoding (vettoreTemporaneo); }
for (int y=0; y<DIM; y++)
{
pixel[colore2]=(char)vettoreTemporaneo[y];
iplPutPixel(dst,x,y,pixel); }
}
}
il problema che quando sono nell'if vettoreTemporano viene trattato correttamente, ma quano arrivo al for più interno non è più disponibile. se tolgo l'if tutto funziona.
come mai:master:
Bisognerebbe vedere anche cosa fanno le funzioni che lo manipolano...
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
ti posto solo questa, le altre sono simili
void leggiVettore(float vettore[DIM], FILE *imm)
{
float vettoreAppoggioLettura[DIM];
for (int a=0; a<DIM; a++)
{
vettoreAppoggioLettura[a]=0;
}
char speciale[2]="$";
char buffer1[10];
char buffer2[10];
int j=0;
while (strcmp(buffer1, speciale))
{
fscanf(imm,"%s",buffer1);
}
while (strcmp(buffer2, speciale))
{
fscanf(imm,"%s",buffer2);
vettoreAppoggioLettura[j]=(float)atof(buffer2);
j++;
}
for (int b=0; b<DIM; b++)
{
vettore[b]=vettoreAppoggioLettura[b];
}
}
la funzione legge da un file di testo dove sono contenuti i valori del vettore delimitati da "$"
Non vorrei sbagliarmi, ma dichiarando l'array in questo modo nella funzione non viene passato l'indirizzo, ma viene creata una copia dell'array all'interno. Quindi, tu non modifichi l'array, ma una sua copia. Per poter passare l'array come riferimento devi utilizzare i puntatori.
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza