C-Funktion liefert const-Zeiger zugeordnet ist, nonconst-Zeiger - Warnung kein Fehler

#include <stdio.h>
#include <stdlib.h>

const int * func()
{
    int * i = malloc(sizeof(int));
    (*i) = 5;    //initialize the value of the memory area
    return i;
}

int main()
{
    int * p = func();
    printf("%d\n", (*p));
    (*p) = 3;       //attempt to change the memory area - compiles fine
    printf("%d\n", (*p));
    free(p);
    return 0;
}

Warum tut der compiler zulassen, mich zu ändern (*p) auch wenn func() gibt einen const pointer?

Ich bin mit dem gcc, es zeigt nur eine Warnung auf der int * p = func(); Zeile : "warning: initialization discards qualifiers from pointer target type".

Dank.

  • Es gibt einen Weg, um der compiler zeigt einen Fehler, anstatt diese Warnung?
  • -pedantic-errors oder -Werror.
  • Was OP zurückgegeben war nicht ein const-Zeiger, sondern ein Zeiger auf const(oder nur Lesen) Objekt.
InformationsquelleAutor printfede | 2011-07-24
Schreibe einen Kommentar