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.