C Programierung Pointer (die 100te)

Gast #6477120
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
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
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

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