Указатель на указатель в C?

Диаграмма, которую я должен использовать, чтобы найти значение a, p, pp, *p, *pp и **pp:

Variable Address Value

 36 4
 a 40 1
 44 2
 48 44
 p 52 40
 56 36
 60 44
pp 64 52
 68 56

Я приезжаю:

a = 1
p = 40
pp = 52

*p = 52
*pp = 64

Является ли **pp так же просто, как взять значение, расположенное на *pp (52)? Это действительно моя единственная идея, иначе я смущен, что делать.

3 ответа

У вас есть & (адрес) и * (разыменованный).

  • & оператор дает вам адрес операнда
  • * оператор дает вам значение по адресу, на который указывает операнд


Учитывая вашу диаграмму и переменные,

*pp = *(52) = *(&p) = p = 40

Посмотрел по-другому,

pp = &p

А также

*p = *(40) = *(&a) = a = 1

что значит

p = &a


Вот как все сложилось:

&pp = 64
 pp = &p = 52
 *pp = p = &a = 40
**pp = *p = a = 1

licensed under cc by-sa 3.0 with attribution.