C-variable per Referenz übergeben
Ich habe den folgenden code:
main()
{
uint8_t readCount;
readCount=0;
countinfunc(&readCount);
}
countinfunc(uint8_t *readCount)
{
uint8_t i;
i = readCount;
....
}
Problem ist, dass beim Eintritt in die Funktion die variable i
hat einen anderen Wert als 0 ist nach der Abtretung ermächtigt.
khm.. das sollte nicht kompilieren
Horvath konnte werden Gießen
möglicherweise werden automatisch durch den generator
kompilieren Sie mit Warnungen und alles wird klar.
Horvath konnte werden Gießen
möglicherweise werden automatisch durch den generator
kompilieren Sie mit Warnungen und alles wird klar.
warning: assignment makes integer from pointer without a cast [enabled by default]
und warning: return type defaults to int
InformationsquelleAutor dare2k | 2012-10-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es, weil in
countinfunc
die variable ist eine Zeiger. Verwenden Sie den pointer dereference-operator zum Zugriff in der Funktion:Ist der einzige Grund, übergeben Sie eine variable als Referenz an eine Funktion ist, wenn es entweder einige großen Daten, kann teuer werden, zu kopieren, oder, wenn Sie wollen, setzen Sie den Wert innerhalb der Funktion, es hält den Wert beim verlassen der Funktion.
Wenn Sie möchten, um den Wert zu setzen, verwenden Sie den dereferenzierungsoperator wieder:
InformationsquelleAutor Some programmer dude
InformationsquelleAutor MOHAMED
ersetzen
mit
InformationsquelleAutor Bhavik Shah
Du bist Einstellung
i
zu den Adresse vonreadCount
. Ändern Sie die Zuweisung zu:und Sie werden in Ordnung sein.
InformationsquelleAutor Anders R. Bystrup
ersetzen Sie einfach
i=readCount
durch
i=*readCount
Nicht zuordnen können
(uint8_t *)
zuuint8_t
Für mehr Informationen ist hier den link unten
Übergabe by reference in C
InformationsquelleAutor Omkant