In C, sto cercando di impostare il valore di un puntatore inviandolo a una funzione, ma il valore non cambierà al di fuori della funzione. Ecco il mio codice:Come impostare il riferimento del puntatore tramite una funzione
#include <stdio.h>
void foo(char* str) {
char* new_str = malloc(100);
memset(new_str, 0, 100);
strcpy(new_str, (char*)"new test");
str = new_str;
}
int main (int argc, char *argv[]) {
char* str = malloc(100);
memset(str, 0, 100);
strcpy(str, (char*)"test");
foo(str);
printf("str = %s\n", str);
}
voglio stampare:
str = new test
ma questo codice stampa fuori:
str = test
Qualsiasi aiuto sarà apprezzato. Grazie in anticipo.
"Non v'è alcun passaggio per riferimento in C" - non è array passati per riferimento? – naivnomore
@naivnomore Fondamentalmente si passa un puntatore che è (almeno sintatticamente) diverso dai riferimenti di passaggio in C++. – Eiko
No, non lo sono. Gli array decadono ai puntatori quando vengono passati come parametri, ma non si tratta ancora di un riferimento pass-by perché la modifica del valore dell'argomento puntatore non influisce sull'array. –