|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Mar 2002
Messaggi: 8
|
Passaggio per indirizzo di un array bidimensionale
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!
__________________
[/siz] |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 1999
Messaggi: 139
|
.
__________________
Ingegnere: colui che ha molta familiarità con i modelli e molto poca con le modelle. |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Mar 2002
Messaggi: 8
|
Ma il prototipo della funzione ha bisogno di qualche modifica?
__________________
[/siz] |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Mar 2002
Messaggi: 8
|
Perchè come mi hai detto tu mi accetta solo la prima dimensione, e nella funzione posso usarlo solo come array monodimensionale.
__________________
[/siz] |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Dec 1999
Messaggi: 139
|
ritiro tuttoooooooooo
scusa mi sono fumanto il brain
__________________
Ingegnere: colui che ha molta familiarità con i modelli e molto poca con le modelle. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
void visualizza_tabellone(char **cTabellone)
Un vettore bidimensionale è a tutti gli effetti un vettore di puntatore quindi bisogna passargli un puntatore a un puntatore... |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Dec 1999
Messaggi: 139
|
Puoi fare così se puoi passare le dimensioni dell' array:
Codice:
#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]);
}
Codice:
#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
}
int main(){ ... q(&cTabellone[0][0],15,30) ... } void q(char *p,int righe,int colonne){ ... }
__________________
Ingegnere: colui che ha molta familiarità con i modelli e molto poca con le modelle. |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
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... |
|
|
|
|
|
#9 | ||
|
Senior Member
Iscritto dal: Dec 1999
Messaggi: 139
|
Quote:
Codice:
#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';
}
Quote:
__________________
Ingegnere: colui che ha molta familiarità con i modelli e molto poca con le modelle. |
||
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
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 |
|
|
|
|
|
#11 | |
|
Member
Iscritto dal: Mar 2002
Messaggi: 8
|
Quote:
__________________
[/siz] |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:16.



















