Diese Aussage gibt keine Kompilierung Fehler in c
Da es keine syntaktischen Fehler oder Einschränkungsverletzung ist, dass Compiler zu urteilen werden soll. C prüft nicht auf Arrays (oder Zeigerarithmetik).
Sie können einen Code schreiben, der ungültigen Speicher verwendet (Beispiel: einen ungültigen Speicherort dereferenzieren), aber falls der Compiler eine Binärdatei für solchen Code erstellt hat, würde die Ausführung der Binärdatei aufrufen undefined behaviour.
noch, wenn ich das Programm ausführen, gibt es einen Laufzeitfehler
in Ihrem Code
int *A [10];
A
ist ein Array von 10 int *
s, und sie sind nicht explizit initialisiert. Aus dem Ausschnitt zu sehen, scheint A
nicht im globalen Bereich, d. H. Nicht static
Speicher, so dass der Inhalt jedes dieser Zeiger unbestimmt sind.
Also, später in Prozess A[2][3]=15;
zu schreiben, Sie versuchen zu ZugangA[2]
(ein Zeiger), der mit einem ungültig Speicher verweist. Dies ruft undefiniertes Verhalten auf.
Warum sollte das ein Laufzeitfehler sein? Wo ist die Logik, um die Art der Überprüfung zu machen, die einen Fehler verursachen würde? –