Adressen von Array

8

Wenn ich ein Array wie folgt deklariert habe:

%Vor%

gespeichert in der Adresse A .

Dann ist a + 1 gleich A+2*4 , das ist mir klar, aber warum ist &a+1 gleich A+6*4 ?

    
user695652 10.11.2011, 20:21
quelle

3 Antworten

7

a ist ein Array von int[2] . Welche hat% 2 * sizeof(int) . Deshalb a + 1 = A + 2*4 . (seit sizeof(int) = 4 in deinem Fall)

Allerdings ist &a ein Zeiger auf int[3][2] . Seit sizeof(int[3][2]) = 6 * sizeof(int) , also: &a + 1 = A + 6*4

    
Mysticial 10.11.2011, 20:31
quelle
2
  

Dann ist a + 1 gleich A + 2 * 4

Dies liegt daran, dass a zu int (*)[2] abfällt und +1 zu 2 * sizeof(int) .

  

aber warum ist & amp; a + 1 gleich A + 6 * 4?

In diesem Fall gibt &a int (*)[3][2] und +1 Ergebnisse in 2 * 3 * sizeof(int) zurück.

    
K-ballo 10.11.2011 20:29
quelle
0

Weil der Bediener & amp; Vorrang vor Operator + haben.

    
Bolivar Stephen 10.11.2011 20:31
quelle

Tags und Links