Rückgabewert von funktion

OP #789635
Lesenswert?
• ▲
▼
Hallo,

ich habe folgenden Code in C geschrieben. Und ich weiß nicht wo mein 
Fehler ist. Wieso ist meine "Ergebnis" nicht wie "erg"? eigenlicht 
sollen die die gleiche Wert haben. Oder täusche ich mich?
______________________________________________________

#include <stdio.h>
#include <stdlib.h>
typedef unsigned char int8;
typedef short int int16;
typedef int int32;

void abc(int32 *data, int32 erg);

int main(){
int32 datain[2];
datain[0] = 0x322e3000;
datain[1] = 0x12345655;
int32 *poiter;
int32 ergebnis;
abc(poiter,ergebnis)
printf("main -- ergebnis:%x\n",ergebnis);

}
void abc(int32 *data, int32 erg){
int16 *ptr1;
int16 *ptr2;
int32 y = *data;
prt1 = (int16*) &y;
ptr2 = (int16*) &erg;
ptr2[1] = ptr1[0];
ptr2[0] = ptr1[1];
printf("void---erg:%x",erg)
}


ERGEBNIS


void---erg:3000322e
main---ergebnis: 8048599
_______________________________________________________



Danke für euere Hilfe

Julietta
Gast #789673
Lesenswert?
• ▲
▼
ich denke das ist eine Hausaufgabe 'schreibe eine Funktion die Hi und Lo 
in einem 32 Bit Wort vertauscht'. Aber das nur Fahrkarten rauskommen 
liegt z.B. noch daran das abc() nicht mal mit initialisierten Werten 
versorgt wird.
#789909
Lesenswert?
• ▲
▼
In dem Code ist so ziemlich alles falsch, was man bei
Parameterübergabe nur falsch machen kann.

Lies dir in deinem Textbuch den Abschnitt noch einmal
durch. Langsam, bedächtig und bei jedem Satz überlegen
was dir der Autor sagen will.

Wenn du einen Pointer hast, dann hats du erst mal nur
eine Variable in der eine Speicheradresse gespeichert
werden kann. Damit man mit einer Pointervariablen sinnvoll
arbeiten kann, muss der Pointer erstmal auf gültigen Speicher
zeigen. Sprich er muss erst mal eine Adresse zugewiesen bekommen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren