Archiv verlassen und diese Seite im Standarddesign anzeigen : [c] warum scanf("%c",&n); und nicht scanf("%c",n); ????
ich hab folgenden code:
#include <stdio.h>
main(void)
{
char n;
fcanf(stdin,"%c",&n);
..
..
exit(0);
}
----->kann mir jemand erklären warum man &n schreiben muss und nicht einfach n... ???
------>ich weiss bei integern muss man es so schreiben (&integer) ...aber warum muss man für ein einziges zeichen das '&' davor schreiben????
anda_skoa
25-06-2003, 15:09
Das hat nichst mit dem Typ der Variable zu tun.
Die scanf Funktion schreibt die Inhalte in Variablen, deren Pointer sie hat.
Du musst also einen Pointer übergeben.
Wenn du nur n übergibts, ist das "Call by Value", d.h. die Funktion bekommt eine Kopie des Inhalts, aber weiß nicht, wo im Speicher die Variable n steht.
Das muss scanf aber wissen, weil es ja das Resultat dorthin schreiben muss.
Ciao,
_
ok..und was ist mit dem folgenden beispiel:
#include <stdio.h>
main()
{
char zeichen[100];
scanf("%s",zeichen):
exit(0);
}
-->da muss man aber kein '&' hinschreiben ....warum nicht?????
oracle2025
26-06-2003, 16:27
weil ein Array immer ein Pointer ist
Original geschrieben von oracle2025
weil ein Array immer ein Pointer ist
Das ist in dieser allgemeinen Aussage sicherlich falsch,gibt viele Bsp. die das zeigen.
Richtig ist,das bei einem Funktionsaufruf ein Array in einen Zeiger auf sein erstes Element degeneriert.
Trillian
26-06-2003, 20:41
Original geschrieben von cyneox
ok..und was ist mit dem folgenden beispiel:
#include <stdio.h>
main()
{
char zeichen[100];
scanf("%s",zeichen):
exit(0);
}
-->da muss man aber kein '&' hinschreiben ....warum nicht?????
Weil in diesem Fall (Array!) "zeichen" = "&zeichen[0]" ist - es liefert also die Adresse des ersten Elements.
vielen dank nochmal für eure mühe....ich glaub ich muss noch mal mein c-programmierbuch lesen....(nur eigene stellen)....
thx @ all
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.