2016-05-20 8 views
-1

Ich habe ein int-Array von nur drei Elemente erklären, aber ich merke, dass ich auf Array-Indizes zugreifen können größerewarum ich den Zugang zu größeren Indizes in c haben

int x[3]; 
int length = sizeof(x)/sizeof(x[0]); 
x[10] = 2000; 
printf("\n the length defined is %i but I can still setting and getting other indexes like index 10", length); 
printf("\n The value of the element eleven is: %i", x[10]); 
+0

Vielleicht [diese Frage] (https://stackoverflow.com/questions/37309076) wird helfen. – user3386109

Antwort

0

Wenn Sie einen Index größer als ein Array-Länge Zugriff Was Sie eigentlich tun, ist, in einen Speicherbereich einzudringen, auf den Sie nicht zugreifen sollen. Dies kann zu unerwartetem Verhalten Ihrer Anwendung oder einem Absturz führen.

+0

Ich verstehe das, aber wissen Sie, warum ist das möglich? –

+0

Bei der Deklaration der Arraygröße geht es darum, wie viel Speicher zugewiesen wird. Beim Zugriff auf diesen zugewiesenen Speicher ist es jedoch Aufgabe des Entwicklers zu steuern, wo in Speicherbereichen gelesen/geschrieben werden soll. Der Compiler prüft nicht, ob der Entwickler auf einen legalen Speicherbereich zugreift. –

1

Eines der Dinge, die C schnell macht, ist, dass es keine Art von Grenzen auf Arrays überprüfen. Es erwartet von den Programmierern, dass sie wissen, was sie tun, um in den richtigen Grenzen zu bleiben.

Andernfalls kann auf einen Teil des Speichers außerhalb der Grenzen des Arrays zugegriffen werden, was zu undefined behavior führt.

Verwandte Themen