Übergeben von Werten aus einer Funktion

Gast #5620766
Hallo miteinander. Ich habe folgendes Problem Ich habe eine Funktion wo 
einen Wert übergibt in einer funktion. Diese übergibt den Wert mit 
"data". Dafür hat es pointer wo den wert übergeben. Jedoch erhalte ich 
den Wert im Main nicht. Kann mir jemand helfen. Ich habe das gefühl ich 
stelle die Variabel data falsch dar. Die funktion Read_information 
funtioniert und bringt mir auch einen Wert.


Code im Haeder
1
uint8_t Test(uint8_t device, uint8_t address, uint8_t *data);

Code im C file von dem Haeder
1
uint8_t Test(uint8_t device, uint8_t address, uint8_t *data)
2
{
3
  //Wert auslesen
4
  *data=Read_information(1);
5
}

Code im Main wo die Variabel "Red" komischerweise 0 beträgt
1
Test(0x70,0x50,Red);
Hallo Tom,

Tom schrieb:
> Code im C file von dem Haederu
>int8_t Test(uint8_t device, uint8_t address, uint8_t *data)
> {
>   //Wert auslesen
>   *data=Read_information(1);
> }

die Funktion hat den Rückgabetyp uint8_t du gibst aber nichts zurück...
das is das erste.

Tom schrieb:
> Code im Main wo die Variabel "Red" komischerweise 0 beträgt
>Test(0x70,0x50,Red);

Nun noch die Adresse der Variable übergeben und der Zeiger schreibt dir 
dann auch den WErt an die Adresse.


1
Test(0x70,0x50,&Red);
Gast
Der Compiler gibt keine Warnings aus ?

Ich rate mal
vielleicht steht bei Dir irgendwo

uint8_t  Red;

Dann müsstest Du Test(0x70,0x50,&Red);   aufrufen, damit der Funktion 
auch einen Pointer auf "Red" übergeben wird.
Tom schrieb:
> Stimmt danke. Mit dem funktionierts.
> Test(0x70,0x50,&Red);

Weisst du auch warum es funktioniert?

Und warum definierst du die Funktion:
uint8_t Test

hast aber in der Funktion kein return() und prüfst auch beim Aufruf 
nichts ab?

Eigentlich hätten dich die Warnings erschlagen müssen.
Gast
Da ich nicht den ganzen Programmcode kopiert habe (wegen verwirrung) 
sondern nur dort wo das Problem liegt und sein kann. Ja im nachhinein 
ist es mir klar wio es dies braucht. Danke nochmals

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.