View Full Version : Passaggio per indirizzo di un array bidimensionale
AMDrea\'80
05-05-2002, 14:53
Il caso č questo:
- dichiarazione array:
char cTabellone[15][30];
- chiamata della funzione con passaggio dell'array x indirizzo:
visualizza_tabellone(cTabellone);
- prototipo della funzione:
void visualizza_tabellone(char *cTabellone);
Dove sbaglio?
Grazie!
MickMacello
05-05-2002, 18:58
.
AMDrea\'80
05-05-2002, 19:06
Ma il prototipo della funzione ha bisogno di qualche modifica?
AMDrea\'80
05-05-2002, 19:11
Perchč come mi hai detto tu mi accetta solo la prima dimensione, e nella funzione posso usarlo solo come array monodimensionale.
MickMacello
05-05-2002, 19:33
ritiro tuttoooooooooo
scusa mi sono fumanto il brain
void visualizza_tabellone(char **cTabellone)
Un vettore bidimensionale č a tutti gli effetti un vettore di puntatore quindi bisogna passargli un puntatore a un puntatore...
MickMacello
06-05-2002, 01:13
Puoi fare cosė se puoi passare le dimensioni dell' array:
#include <stdio.h>
void q(char p[15][30]);
int main(){
int i;
char cTabellone[15][30];
for(i=0;i<30;++i){
cTabellone[0][i]='0';
cTabellone[1][i]='A';
}
q(cTabellone);
}
void q(char p[15][30]){
printf("%c",p[1][1]);
}
o cosė:
#include <stdio.h>
void q(char *p);
int main(){
int i;
char cTabellone[15][30];
for(i=0;i<30;++i){
cTabellone[0][i]='0';
cTabellone[1][i]='A';
}
q(&cTabellone[0][0]);
}
void q(char *p){
printf("%c",*(p+31)); //*(p+31) in questo caso č il primo elemento dell' array = A
}
In questo secondo caso sarebbe meglio passare alla funzione le dimensioni dell' array in 2 variabili separate aggiuntive tipo:
int main(){
...
q(&cTabellone[0][0],15,30)
...
}
void q(char *p,int righe,int colonne){
...
}
MickMacello : nel primo caso, se non sbaglio, passi l'array per valore...non oso pensare quanto sia lento ;)
Nel secondo non puoi pių usare l'indicizzazione bidimensionale, ma solo quella monodimensionale...
MickMacello
06-05-2002, 17:58
Originariamente inviato da cionci
[B]MickMacello : nel primo caso, se non sbaglio, passi l'array per valore...non oso pensare quanto sia lento ;)
no lo passo per indirizzo prova tu stesso ;) :
#include <stdio.h>
void q(char p[15][30]);
int main(){
int k,j;
char cTabellone[15][30];
for(k=0;k<15;++k)
for(j=0;j<30;++j)
cTabellone[k][j]='Q';
for(k=0;k<15;++k)
for(j=0;j<30;++j)
printf("%d\t%c\n",k*30+j,cTabellone[k][j]);
printf("\n");
q(cTabellone);
for(k=0;k<15;++k)
for(j=0;j<30;++j)
printf("%d\t%c\n",k*30+j,cTabellone[k][j]);
printf("\n");
}
void q(char p[15][30]){
int k,j;
for(k=0;k<15;++k)
for(j=0;j<30;++j)
p[k][j]='Z';
}
forse ti riferisci alla classe vector della STL del C++
Originariamente inviato da cionci
[B]
Nel secondo non puoi pių usare l'indicizzazione bidimensionale, ma solo quella monodimensionale...
Sė questo č vero.
Ah...č vero...
Inoltre con i vettori statici lo devi per forza passare come hai detto tu nel primo esempio...o al massimo cosė : void q(char p[][23])
Non sono abituato a lavorare con i vettori statici :p
AMDrea\'80
06-05-2002, 21:22
Originariamente inviato da MickMacello
[B]Puoi fare cosė se puoi passare le dimensioni dell' array:
#include <stdio.h>
void q(char p[15][30]);
int main(){
int i;
char cTabellone[15][30];
for(i=0;i<30;++i){
cTabellone[0][i]='0';
cTabellone[1][i]='A';
}
q(cTabellone);
}
void q(char p[15][30]){
printf("%c",p[1][1]);
}
Grazie mille, ho risolto con qs metodo!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.