2012-04-13 9 views
0

Ist es möglich, ein Array der Größe 1 zu deklarieren und in der Lage zu sein, 5 Elemente darin zu speichern und sie dann abzurufen?Array-Größe kleiner als die Nr. der darin gespeicherten Elemente

Ich versuche einen solchen Code, wo ich ein Array arr[1] deklariert und dann 5 Elemente darin gespeichert. Es war tatsächlich möglich, 5 Elemente zu speichern! Wie war es?

+2

Was ist Ihre Programmiersprache? –

+0

Hängt von der Programmiersprache ab. So unfähig, eine definitive Antwort zu geben. –

+0

Ich denke, dass er über C spricht. Sicher. – Surya

Antwort

2

Wenn diese C (oder C++) ist, können Sie ganz einfach mehr Elemente speichern, als die Anordnung ist so bemessen:

#include <stdio.h> 

int main (void) { 
    int x = 0; 
    int a[1]; // so that a[0] is the only valid element 
    a[1] = 7; // write beyond end of array 

    printf ("x=%d, &a[0]=%p, &a[1]=%p, &x=%p\n", x, &(a[0]), &(a[1]), &x); 
    return 1; 
} 

so tut, führt jedoch zu einem undefinierten Verhalten, wahrscheinlich einige anderen überschreiben Stück Information, und ist nicht wirklich eine gute Idee.

Auf meinem System, dass obiger Code druckt:

x=7, &a[0]=0xbf9bb638, &a[1]=0xbf9bb63c, &x=0xbf9bb63c 

trotz der Tatsache, ich x auf Null gesetzt und nie geändert explizit. Dies liegt daran, dass das Schreiben über das Ende des Arrays hinaus betroffen ist (wie Sie an den zwei identischen Adressen für a[1] und x sehen können).

Verwandte Themen