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?
Ü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.
Ein lokal deklariertes Array nullter Länge ist in C ++ unzulässig, also ist es nicht dasselbe wie ein nicht zugeordneter Zeiger.
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: Ссылка