Welchen Pointer auf konstantes Array



  • Wenn ich folgendes Array habe:

    const unsigned char array[] = { 1, 2, 3 }
    

    welche Art von Pointer (const *, const * const, * const) muss ich dann als Parameter in einer Funktion deklarieren, damit ich dieses Array übergeben kann und dann mit einer normalen Variable lesend (nicht schreibend) auf die einzelnen Elemente zugreifen kann?

    void function(TYPE arrayPointer, int length)
    {
        int i = 0;
        unsigned char c;
    
        while (i < length)
        {
            c = arrayPointer[i];
    
            /* -- Beliebiger Code -- */
    
            i++;
        }
    }
    

    Was muss an der Stelle von TYPE stehen, damit der Code kompiliert? Ich krieg's irgendwie nicht hin.


  • Mod

    Entweder const unsigned char * (Zeiger auf konstante Elemente vom Typ unsigned char) oder const unsigned char *const (konstanter Zeiger auf konstante Elemente vom Typ unsigned char). Wobei das zweite eher ungewöhnlich wäre, da es Implementierungsdetails (constness einer funktionslokalen Variable) der Funktion in die öffentliche Schnittstelle einfügt.



  • const unsigned char *



  • const unsigned char*



  • Quizfrage: Welche Deklaration ist nicht erlaubt?

    const unsigned char *a = 0;
    unsigned const char *b = 0;
    unsigned char const* c = 0;
    

Anmelden zum Antworten