Arrays mit 0 Elementen

8

Ist ein Array mit 0 Elementen dasselbe wie ein nicht zugeordneter Zeiger?

Ist int arr[0]; identisch mit int* arr; ?

Bearbeiten: Was passiert, wenn ich etwas Ähnliches mache:

%Vor%

Ich habe diesen Code ausprobiert und es kompiliert. Nach meinem Wissen sollten sowohl x als auch arr auf den gleichen Speicherort im Speicher zeigen. Was wäre der Unterschied in diesem Fall?

    
Dasaru 20.04.2012, 15:14
quelle

3 Antworten

13

Überhaupt nicht.

Im Fall von arr [0] hat arr eine gut definierte Adresse.

Im Falle von * arr ist arr einfach nicht initialisiert.

Nach Ihrem EDIT , wo Sie das const arr mit einem Array initialisieren, das gerade vorher definiert wurde: Es würde nur keinen Unterschied im Inhalt der Variablen geben, aber im Aktionen, die Sie ausführen könnten.

    
Skippy Fastol 20.04.2012, 15:15
quelle
4

Ein lokal deklariertes Array nullter Länge ist in C ++ unzulässig, also ist es nicht dasselbe wie ein nicht zugeordneter Zeiger.

    
Charles Bailey 20.04.2012 15:27
quelle
0

Ein Array der Länge Null zeigt auf eine bestimmte Adresse, den Anfang des Arrays. Nach dem Ende des Arrays haben Sie undefinierte Daten, in diesem Fall an der Adresse, auf die gezeigt wird.

%Vor%

Ein Weg, wie das nützlich ist: Ссылка

    
Kendall Frey 20.04.2012 15:22
quelle

Tags und Links