C Programierung Pointer (die 100te)

Gast #6477120
Lesenswert?
• ▲
▼
Hallo,
irgendwie habe ich gerade ein Brett vor dem Kopf, und mir fehlen 
irgendwie auch die richtigen Suchbegriffe.
also dann mal los, was ich machen möchte ist dass ich einer Funktion 
eine Variable übergebe, in der dann innerhalb der Funktion eine 
(pointer) Adresse geschrieben wird.

hier mein Ansatz welcher aber zu einer warnung inkompatieble typen führt
1
char *ptrGlobal;
2
const char textGlobal[] = "test text";
3

4
void myFunk(char **ptrVar)
5
{
6
    *ptrVar = textGlobal;
7
}  
8

9
main()
10
{
11
    char *local = null;
12
    myFunkt(&local);
13
}
Gast #6477126
Lesenswert?
• ▲
▼
Es wäre sehr hilfreich gewesen, die Meldungen des Compilers zu zitieren:
1
test.c: In function ‘myFunk’:
2
test.c:6:13: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
3
     *ptrVar = textGlobal;
4
             ^

textGlobal ist ein unveränderbarer String.
ptrVar ist ein Zeiger auf einen änderbaren String.

Deswegen soll ptrVar nicht auf textGlobal zeigen. Die Typen passen nicht 
zusammen.

Lösung:
1
const char textGlobal[] = "test text";
2

3
void myFunk(const char **ptrVar)
4
{
5
    *ptrVar = textGlobal;
6
}  
7

8
int main()
9
{
10
    const char * local = 0;
11
    myFunk(&local);
12
}

> const char *
Bedeutet: Ein änderbarer Zeiger auf einen nicht änderbaren String.

Nachtrag: Hoppla, andere haben mich beim Antworten überholt.
Gast #6477132
Lesenswert?
• ▲
▼
Hallo zusammen,

vielen Dank erst mal,

leider habe ich da beim vereinfachen ein paar Fehler eingebaut welche im 
eigentlich Programm garnicht drin sind :(

auf jeden Fall super wie einem hier geholfen wird. Um das Problem auf zu 
lösen
(und das ist mir jetzt echt peinlich) ich hatte an einer Stelle char 
verwendet und an einer anderen uint8_t. Das sollte so natürlich nicht 
sein, und wurde zurecht angemeckert.

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.