Zugriff auf Zeiger / Strukturen

Gast #1360998
Ich habe folgende Strukturen:
1
typedef struct b
2
{
3
   unsigned char* rd; 
4
} b_t;
5

6
typedef struct a
7
{
8
   struct b_t* ring_buff;
9
} a_t;
10

11
struct a_t* xxx

Mein Ziel ist es nun den Wert der durch
1
*xxx.ring_buff->rd
adressiert wird, mit seinem Nachfolger zu addieren.
da der Compiler mir auf alle meine Versuche mit Fehlermeldungen 
reagiert, hier meine Frage an Euch, wie funktioniert das?.
Meiner Meinung nach wäre folgenes plausibel, aber wie gesagt nicht 
Compilerfreundlich
1
 temp = *xxx.ring_buff->rd + *xxx.ring_buff->(rd+1)
Gast
Neue Frage:
[c]
unsigned char func(unsigned char* ptr){

      if(*ptr=='5')   return 1;
      else            return 0;
}

//Aufruf
func( &((unsigned char)'5') );
[\c]

Warum ist dieser Aufruf nicht erlaubt vom Compiler?

'5' wird doch in "gecastet" und die Adresse dieses gecasteten wird 
übergeben, was ja gleichbedeutend mit einem Pointer ist.
Gast
> Warum ist dieser Aufruf nicht erlaubt vom Compiler?

Ich würde vermuten, daß der  Compiler dir das mit irgendeiner 
Fehlermledung mitteilt. Leider kennst die nur du.

> '5' wird doch in "gecastet"

Genau das ist das Problem. Du versuchst, die Adresse vom Ergebnis des 
Casts zu bilden, und das geht nicht.
Außerdem macht ein Cast aus einer Konstanten keine Variable. Ich denke, 
dass hier das Verständnisproblem des OP liegt. Das Ergebnis des Cast ist 
nicht eine namenlose Variable vom angegebene Typ, sondern immer noch 
eine Konstante.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 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.