int (* p) [4]?

8

int (* p) [4];

Ist "p" Zeiger auf Array von 4 ganzen Zahlen? oder was ??

und wie kann ich "neu" für diesen Zeiger aufrufen?

    
Farah_online 01.08.2010, 17:11
quelle

3 Antworten

7
  

Ist "p" Zeiger auf Array von 4 ganzen Zahlen?

Richtig!

  

Wie kann ich "neu" für diesen Zeiger aufrufen?

Zum Beispiel p = new int[7][4] .

    
fredoverflow 01.08.2010, 17:12
quelle
6

int (*p)[4] ist tatsächlich ein Zeiger auf ein Array von vier int s.

Sie können ein Objekt vom Typ "pointer to array of vier int " wie folgt dynamisch zuweisen:

%Vor%

Beachten Sie, dass kein Platz für int s zugewiesen ist. nur der Zeiger selbst.

Sie können ein Array von 4 Ints wie folgt zuweisen:

%Vor%

Was Sie nicht tun können (ohne explizites Casting), weisen Sie einem Zeiger vom Typ int einen Zeiger auf ein dynamisch zugewiesenes Array von 4 int (*)[4] zu. Wenn Sie ein Array über new zuweisen, ist der Typ des neuen Ausdrucks ein Zeiger auf das erste Element des Arrays, auch wenn Sie einen typedef verwenden. Die Größe des Arrays wird nicht im Typ des new -Ausdrucks beibehalten.

Dies liegt daran, dass new[] -Ausdrücke Arrays zuordnen können, bei denen die Größe des Arrays zur Laufzeit ausgewählt wird. Daher wäre es nicht immer möglich (oder sogar wünschenswert), die Array-Größe in den Typ des neuen Ausdrucks zu codieren >

Wie bereits vorgeschlagen, können Sie ein Array mit einem Array von 4 int dynamisch zuweisen. Die Größe des ersten Arrays geht aus den Typinformationen verloren, und Sie erhalten einen Zeiger auf das erste Element des Arrays (der Größe 1) der Arrays mit vier int .

%Vor%

Obwohl es sich um ein Array von nur 1 (Arrays von 4 int) handelt, müssen Sie delete[] noch verwenden, um p zu entziehen.

%Vor%     
Charles Bailey 01.08.2010 21:01
quelle
3

Der Online-CDECL-Evaluator ist eine hilfreiche Ressource für Fragen wie das:

%Vor%     
Seth 01.08.2010 17:56
quelle

Tags und Links