Forum: Mikrocontroller und Digitale Elektronik Pointer Problem


von User (Gast)


Lesenswert?

Hi, wie können die Daten in der Funktion nach ausgegeben werden, so dass 
die Daten im data Puffer vorhanden sind?
1
void Receive(unsigned int PageAddress, unsigned char  *pData)
2
{
3
  unsigned char Buffer[256];
4
  for(int i = 0; i < 256; i++)
5
  {
6
     Buffer[i] = 0x56;
7
  }
8
9
  pData = Buffer;
10
}

Aufruf der Funktion Receive:
1
unsigned char data[256];
2
3
Receive(0, data);

von User (Gast)


Lesenswert?

Die Funktion memcpy soll allerdings nicht eingesetzt werden.

von guest (Gast)


Lesenswert?

Du weist pData die Adresse eines Puffers zu, der nur innerhalb der 
Funktion existiert.
Das ist nicht gut.

Besser so:
1
void Receive(unsigned int PageAddress, unsigned char  *pData)
2
{
3
  
4
  for(int i = 0; i < 256; i++)
5
  {
6
     pData[i] = 0x56;
7
  }
8
}

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

guest schrieb:
> Besser so:

Korrekt. Anzumerken ist dazu, dass der Buffer natürlich dann in der 
aufzurufenden Funktion definiert werden muss. Bei dem Versuch, einen 
simplen Pointer runterzureichen, knallts sonst.

von User (Gast)


Lesenswert?

Ok vielen Dank.

von Dirk B. (dirkb2)


Lesenswert?

User schrieb:
> Die Funktion memcpy soll allerdings nicht eingesetzt werden.

Das wäre ein Fall für memset

von Dirk B. (dirkb2)


Lesenswert?

User schrieb:
> Hi, wie können die Daten in der Funktion nach ausgegeben werden, so dass
> die Daten im data Puffer vorhanden sind?

noch ist hier verkehrt, da es so nicht geht.

von Draco (Gast)


Lesenswert?

Wobei der Aufruf dann natürlich:
1
Receiver(0,&data);

...sein muss.

von (unknown) (Gast)


Lesenswert?

Nicht wenn es sich bei data um ein Array handelt.
1
unsigned char data[256];
2
3
Receive(0, data);

ist Korrekt.

von Draco (Gast)


Lesenswert?

Hendrik S. schrieb:
> Nicht wenn es sich bei data um ein Array handelt.unsigned char
> data[256];
>
> Receive(0, data);
>
> ist Korrekt.

Ahhh... Jaaaaa... :'D das ist ja schon die Adresse auf die Position :-) 
das Array hab ich garnicht "registriert" im Kopf.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.