PDA

Visualizza la versione completa : [C/C++] Passare puntatore array stringa a funzione


Razorblade
17-11-2008, 06:18
Ciao a tutti,
il problema è il seguente:
ho un array di caratteri, per esempio


char nome[] = { 'R', 'a', 'z', 'o', 'r','\0' };

ed ho una funzione che dovrebbe poter modificare il valore di 'nome'.
Come devo indicare l'argomento 'nome' alla definizione della funzione?
E come devo indicarlo alla chiamata della funzione?

Ho fatto diversi test ma il compilatore mi restituisce sempre qualche errore.
Attualmente ho scritto la dichiarazione in questo modo


void MiaFunzione(char ** nome);

e la chiamata in questo modo


MiaFunzione(&nome);

Qual è la corretta sintassi ed il concetto per comprenderla?
Grazie

PS.
L'ultimo elemento dell'array è il null character, evidentemente ci dev'essere un problema nel forum nella gestione di questo

oregon
17-11-2008, 08:13
void funzione(char *n)
{
n[0]=tolower(n[0]);

return;
}

int main()
{
char nome[] = "Razor";

printf("%s\n", nome);

funzione(nome);

printf("%s\n", nome);

return 0;
}

Razorblade
17-11-2008, 08:25
Ciao,
non ho ancora testato la tua soluzione, ho una cosa da chiederti prima:ù
l'argomento 'n' passato a funzione, cos'è?
Grazie

Razorblade
17-11-2008, 08:28
Guarda non rispondere nemmeno.. domanda stupida :)

Razorblade
17-11-2008, 09:49
Ho ancora una domanda sempre sull'argomento:
se passo ad una funzione un puntatore di un intero ( perchè questa funzione fa delle operazioni che modificano il suo valore a livello globale ) posso all'interno di questa funzione ricavare il valore dal puntatore ( se si come? devo fare qualche operazione particolare o posso leggere il valore direttamente dal punatatore? ) o dovrò passare anche la variabile non puntatore?

Il mio problema attualmente è che ricevo errori di questo tipo:
invalid conversion from 'int' to 'int*'

Grazie

mondobimbi
17-11-2008, 10:00
devi derefenziare il puntatore utilizzando l'operatore * .

ciao
sergio

Razorblade
17-11-2008, 10:19
Potresti postare un breve esempio?
Grazie

mondobimbi
17-11-2008, 10:51
// dichiaro un puntatore ad int
int * ptr;
// alloco la memoria
ptr = new int;

*ptr = 10;
// adesso il contenuto della memoria puntata da ptr vale 10

int i = *ptr;
// anche i vale 10;

oregon
17-11-2008, 10:56
void funzione(int *v)
{
printf("%d\n", *v);

return;
}


Guarda che questi argomenti non sono da affrontare in un forum ma su un qualsiasi libro di C ...

Razorblade
17-11-2008, 11:16
Grazie ad entrambi per le risposte.
Oregon, hai ragione a scrivere a proposito del libro, pensa che sono le stesse parole che ho scritto su questo stesso forum a diversi utenti php, uno dei linguaggi da cui provengo ( e qui immagino dirai: 'ah ecco spiegate molte cose' :) ).

Conosco il significato dei puntatori, volevo solo chiarirmi velocemente queste poche questioni. Se fossi stato all'oscuro non sarei nemmeno stato in grado di porre le domande che ho posto.

Tuttavia seguirò presto il tuo consiglio, la voglia non mi manca, anzi, se dai un'occhiata al mio blog lo puoi constatare con i tuoi occhi ( beh, sono sicuro che non ti interessa nulla, era così per dire :) )

Ciao

Loading