Erwägen Programm folgend:Zeiger auf Array mit konst Qualifier in C & C++
int main()
{
int array[9];
const int (*p2)[9] = &array;
}
Es kompiliert fein in C++ (siehe Live-Demo here), aber nicht in Kompilierung in C standardmäßig GCC gibt folgende Warnungen. (Siehe Live-Demo here).
prog.c: In function 'main':
prog.c:4:26: warning: initialization from incompatible pointer type [enabled by default]
const int (*p2)[9] = &array;
Aber Wenn ich -pedantic-errors
Option:
gcc -Os -s -Wall -std=c11 -pedantic-errors -o constptr constptr.c
es mir Fehler folgende Compiler
constptr.c:4:26: error: pointers to arrays with different qualifiers are incompatible in ISO C [-Wpedantic]
Warum es nicht in Kompilierung in C, aber nicht in C++ gibt? Was sagt C & C++ Standard darüber?
Wenn ich const Qualifier in Array-Deklaration Anweisung verwenden kompiliert es auch in C gut. Also, was passiert hier im obigen Programm?
Während ich verstehe, ist dies eine gute Frage, aber einfach zu fragen, was C & C++ Standard darüber sagt? 'Ist nicht gut. Hast du versucht, in die Standards zu schauen? Welchen Teil hast du nicht verstanden? Haben Sie Unterschiede festgestellt? Wo sind Ihre Forschungsanstrengungen? Hoffe ich werde verstanden. :) –