Warum benötige ich hier kein Stern beim Pointer? :-) Bitte um Hilfe

Gast #1860451
Lesenswert?
• ▲
▼
Guten Tag an alle Pointer-Spezialisten.

Eine kurze Frage: Wann * vorm Pointer, wann nicht?

Beispiel:
1
uint8_t uart_snd_buffer[100];
2

3
test = build_checksum (uart_snd_buffer, 3);
4

5
uint8_t build_checksum (uint8_t *data, uint8_t bytecount)
6
{
7
  uint8_t checksum = 0;
8
  uint8_t counter;
9
  
10
  for (counter = 0; counter < bytecount; counter++)
11
  {
12
    checksum ^= data[counter];
13
  }
14
  
15
  return checksum;
16
}

Ich übergebe ja ein Array, da wird ja direkt die Adresse übergeben, 
nicht der Inhalt. In meiner Funktion "build_checksum" habe ich als 
Übergabewert einen Pointer, da ich ja eine Adresse bekomme.

Aber wieso muss ich jetzt bei
1
checksum ^= data[counter];
nicht
1
checksum ^= *data[counter];
? Ich will doch den Inhalt haben.

Manchmal steh ich da echt noch auf dem Schlauch. Der Compiler meckert 
mit "*" auf jeden Fall und ohne gehts.
Gast #1860463
Lesenswert?
• ▲
▼
Stell dir eine Zeichenkette vor:

char *text = "Hallo Welt.";

Möchtest du nun einen einzelnen Buchstaben haben, kannst du das 
ebenfalls über die eckigen Klammern erreichen:

char buchstabe = text[2];

Du erhältst dereferenziert einen char.
Das ist äquivalent zu:

char buchstabe = *(text + 2);

Nico

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.