Zeiger < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 14:37 Di 15.02.2011 | Autor: | Benja91 |
Hallo,
ich habe diese Frage in keinem anderen Forum gestellt:
Ich habe folgendes Programm geschrieben und es mit der Lösung abgeglichen:
#include <stdio.h>
void addiere(int *summand1, int *summand2, int *summe) {
*summe = *summand1 + *summand2;
}
main()
{/* Benutzer gibt zwei Summanden ein*/
int zahl1, zahl2;
int summe;
printf("Geben Sie zwei Zahlen ein die addiert werden [mm] sollen:\n [/mm] z1=");
scanf("%d", &zahl1);
[mm] printf("\nz2=");
[/mm]
scanf("%d",&zahl2);
/*Addition*/
addiere(&zahl1, &zahl2, &summe);
printf("Die Summe der beiden Zahlen ist %d", summe);
return 0;
}
Es funktioniert so weit auch, allerdings ist mir nicht klar, wie das mit den Zeigern genau funktioniert. Ein Zeiger weist ja auf die Adresse einer Variablen. Warum kann ich in der letzen printf Anweisung nicht schreiben:
printf("Die Summe der beiden Zahlen ist %d", *summe);
Denn die void-Funktion liefert ja einen Zeiger auf die Summe...
Danke für eure Hilfe.
Gruss
Benja
|
|
|
|
> Hallo,
>
> ich habe diese Frage in keinem anderen Forum gestellt:
>
> Ich habe folgendes Programm geschrieben und es mit der
> Lösung abgeglichen:
>
1: |
| 2: | > #include <stdio.h>
| 3: | >
| 4: | > void addiere(int *summand1, int *summand2, int *summe) {
| 5: | > *summe = *summand1 + *summand2;
| 6: | > }
| 7: | >
| 8: | > main()
| 9: | > {/* Benutzer gibt zwei Summanden ein*/
| 10: | > int zahl1, zahl2;
| 11: | > int summe;
| 12: | > printf("Geben Sie zwei Zahlen ein die addiert werden
| 13: | > [mm]sollen:\n[/mm] z1=");
| 14: | > scanf("%d", &zahl1);
| 15: | > [mm] printf("\nz2=");[/mm]
| 16: | > scanf("%d",&zahl2);
| 17: | >
| 18: | > /*Addition*/
| 19: | >
| 20: | > addiere(&zahl1, &zahl2, &summe);
| 21: | > printf("Die Summe der beiden Zahlen ist %d", summe);
| 22: | > return 0;
| 23: | > }
| 24: | >
|
du übergibst der funktion ja mit &varname ja die adressen der variablen. die funktion zeigt dann darauf mit nem zeiger.
mit *pointername bist du ja dann fähig, den inhalt der zieladresse zu ändern
in addieren geschieht das ja
> Es funktioniert so weit auch, allerdings ist mir nicht
> klar, wie das mit den Zeigern genau funktioniert. Ein
> Zeiger weist ja auf die Adresse einer Variablen. Warum kann
> ich in der letzen printf Anweisung nicht schreiben:
summe ist immernoch eine normale variable und kein pointer. wenn du jedoch nen zeiger in der main auf die summe machst, kannst du das so machen wie du meinst:
int *summenpointer = &summe;
...
printf("Die Summe der beiden Zahlen ist %d", *summenpointer);
>
>
> printf("Die Summe der beiden Zahlen ist %d", *summe);
>
> Denn die void-Funktion liefert ja einen Zeiger auf die
> Summe...
>
> Danke für eure Hilfe.
>
> Gruss
> Benja
gruß tee
|
|
|
|