Forum: Compiler & IDEs SIZEOF array ARM GCC


von gast (Gast)


Lesenswert?

Hallo hab ein Problem mit sizeof was mach ich falsch.

Die berechnete size ist immer 4.

Aufruf mit:

char buf = "Hallo Welt";
senDataTest1(0x01,buf);

Funktion:
1
void senDataTest1(uint8_t id, char *dataBuff) 
2
{
3
  uint8_t size = (sizeof(dataBuff)/sizeof(dataBuff[0]));
4
5
  printf("DB:%s",dataBuff);
6
7
  writeData(id,CMD_TX_TEST1,size,dataBuff);
8
}

von Andreas K. (a-k)


Lesenswert?

Probier's mal mit strlen(). Mit sizeof kriegst du hier nur die Grösse 
vom Zeiger auf den String, nicht die Länge vom String.

von holger (Gast)


Lesenswert?

sizeof(dataBuff) = 32 Bit = 4 Byte
sizeof(dataBuff[0]) = 1 Byte = 1 Byte

von gast (Gast)


Lesenswert?

Danke.

von Karl H. (kbuchegg)


Lesenswert?

Der springende Punkt ist der, dass in senDataTest1 die Variable
dataBuff kein Array, sondern ein Pointer ist. Daher kriegst
du konequenter Weise auch nicht mehr die allokierte Größe des
Arrays sondern den Speicherverbrauch eines Pointers mit sizeof.

von gast (Gast)


Lesenswert?

okay, danke.

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.