|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 | |
|
Bannato
Iscritto dal: Jul 2008
Messaggi: 185
|
[C] Problema con funzioni e puntatori
Salve ragazzi, all'uni ci stanno facendo fare un corso di informatica con "basi" di programmazione in C, per quanto riguarda quest'ultimo non ho ancora capito come funzionano i puntatori e gli array multidimensionali.
Ho cercato di fare qualcosa da solo: un programma che acquisista una matrice con 2 righe e un numero di colonne pari al massimo della lunghezza della stringa (il mio caso [2][50]), che le stampi e poi ho voluto creare una funzione che inserendo il numero della riga mi stampasse solamente quella riga, ma non ci sono riuscito. ç_ç Ecco a voi cosa ho fatto: Quote:
|
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: May 2009
Messaggi: 1413
|
Quote:
Magari è troppo tardi, ma lo scrivo comunque: Quando vuoi passare come parametro ad una funzione una matrice, devi specificare il numero delle colonne, quindi: Codice:
<T> nomeFunzione(<T> matrice[][COLONNE]) Ho notato anche che hai scritto: Codice:
puts((*v[n])); Quindi non serve il *. (Comportandoti in modo "normale" per fare scanf e mettere il valore nella matrice devi usare sempre &, anche se sei in una funzione e la matrice è un parametro). In più: Codice:
stampa (&v, r); Se hai bisogno chiedi pure.
__________________
PC: Carbide 400r, Corsair TX650M, FX8320, CM 412s, Gigabyte 970-UD3, G.skill Ares 2x4GB, Crucial M500 120GB, Seagate 7200.14 2TB, Seagate 7200.12 750GB, Gigabyte GTX570. Windows 10 Pro Notebook: Dell Latitude E7450, i5-5300U, SSD 256Gb, 8GB. Windows 10 Pro LG G3 |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jul 2010
Città: Teramo
Messaggi: 1298
|
Quote:
Poi conta che da matrice in questo caso diventi un vettore, forse fa una sorta di casting ( difficile ) oppure un errore che non ti so spiegare. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: May 2009
Messaggi: 1413
|
Quote:
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
void stampa (char v[][50], int n);
int main(){
char v[2][50];
int r;
for (r=0; r<2; r++)
gets(v[r]);
printf("\n\n");
for (r=0; r<2; r++)
puts(v[r]);
printf("\nQuale riga vuoi stampare?");
scanf("%d",&r);
stampa(v,r);
system("PAUSE");
}
void stampa (char v[][50], int n){
puts(v[n]);
}
__________________
PC: Carbide 400r, Corsair TX650M, FX8320, CM 412s, Gigabyte 970-UD3, G.skill Ares 2x4GB, Crucial M500 120GB, Seagate 7200.14 2TB, Seagate 7200.12 750GB, Gigabyte GTX570. Windows 10 Pro Notebook: Dell Latitude E7450, i5-5300U, SSD 256Gb, 8GB. Windows 10 Pro LG G3 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:56.



















