mal wieder pointer



  • Hallo, 🙂

    Ich versuche mich gerade an meiner übungsmappe aus der uni.
    Ich habe ein problem mit zeigern, so ganz versteh ich die logik bzw. nicht wie ich sie anwende.

    uprog2(char struprog[]){
    if(struprog[0] == 'H'){/*mache was*/}  // wie frage ich hier nach dem kopierten string?
    
    printf(struprog);
    }
    
    uprog(char struprog[]){
    
    // wie kann ich zum beispiel diesen str ausgeben? genau wie in main?
    
    // wie rufe ich ein weiteres unterprogramm auf?
    uprog2(&struprog); // so???
    
    }
    
    main ()
    {
    char* str = malloc(1024*4);
    char* str2 = malloc(1024*4);
    
    //aufruf eines unterprogramms:
    
    strcpy(str,"hallo");
    uprog(&str)   // hier wird "nur" die Adresse übergben, richtig?
    
    }
    

    ich versteh nicht wie ich daten übergeben (die adresse übergeben kann?)
    hat vielleicht jmd ein beispiel. das mir diesen code verständlicher machen kann? 🙄

    vielen dank



  • uprog2(char struprog[]){
    if(struprog[0] == 'H'){/*mache was*/}  // wie frage ich hier nach dem kopierten string?
    
    printf(struprog);
    }
    

    Hier gibt es keinen kopierten String. struprog ist ein char Array und das ist im Prinzip nichts anderes als ein Zeiger auf den ersten char.

    uprog(char struprog[]){
    
    // wie kann ich zum beispiel diesen str ausgeben? genau wie in main?
    
    // wie rufe ich ein weiteres unterprogramm auf?
    uprog2(&struprog); // so???
    
    }
    

    printf(struprog);
    oder
    puts(struprog);

    da struprog (mah, der Name ist echt mal ungut zu schreiben - trenne die Namen mal ein bisschen statt struprog, uprog, uprog2 - wie waere es mit string, funktion und neue_funktion?) ein Zeiger auf den ersten char ist, reicht ein uprog2(struprog); .

    main ()
    {
    char* str = malloc(1024*4);
    char* str2 = malloc(1024*4);
    
    //aufruf eines unterprogramms:
    
    strcpy(str,"hallo");
    uprog(&str)   // hier wird "nur" die Adresse übergben, richtig?
    
    }
    

    Jedes malloc braucht sein free().
    bzgl str und &str hab ich ja schon was geschrieben.



  • Shade Of Mine schrieb:

    uprog2(char struprog[]){
    if(struprog[0] == 'H'){/*mache was*/}  // wie frage ich hier nach dem kopierten string?
    
    printf(struprog);
    }
    

    ...struprog ist ein char Array und das ist im Prinzip nichts anderes als ein Zeiger auf den ersten char.

    nö, struprog ist ein char-pointer. array-syntax als funktionsparameter ist das selbe ein pointer. ein array ist da nirgends. das sieht nur optisch so aus.
    🙂


Anmelden zum Antworten