Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C] Allocazione dinamica nel passaggio di un array di char

    Salve, ho un problema riguardante l'assegnamento di un array di char passato per argomento alla funzione "test".
    Praticamente la memoria viene allocata momentaneamente solo nell'esecuzione della funzione test. Infatti printf("String: %s\n", string) stampa String: test-test.
    Una volta terminata la funzione test, il programma stampa "Null".

    Non riesco a capirne la motivazione essendo un passaggio per riferimento ed un'allocazione dinamica della memoria.

    codice:
    void test(char* string);
    
    int main() {
        
        char* string;
        
        test(string);
        
        if (string == NULL) {
            printf("Null\n");
        } else {
            printf("Not null\n");
        }
        
        return 0;
        
    }
    
    
    void test(char* string) {
        
        string = calloc(10, sizeof(char));
        strcpy(string, "test-test");
        printf("String: %s\n", string);
        
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Per modificare il puntatore, questo va passato per puntatore ... quindi

    codice:
    void test(char** string) {
    	*string = (char *)calloc(10, sizeof(char));
    	strcpy(*string, "test-test");
    	printf("String: %s\n", *string);
    }
    e nel main

    codice:
    test(&string);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Ti ringrazio per la risposta, proverò

  4. #4
    Funziona correttamente, grazie @oregon
    Potete chiudere.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.