Целью указателя является сохранение адреса определенной переменной. Тогда структура памяти следующего кода должна выглядеть так:
int a = 5;
int *b = &a;
...... адрес памяти...... значение
a... 0x000002................... 5
b... 0x000010................... 0x000002
Хорошо, отлично. Тогда предположим, что теперь я хочу сохранить адрес указателя * b. Затем мы обычно определяем двойной указатель, ** c, as
int a = 5;
int *b = &a;
int **c = &b;
Затем структура памяти выглядит так:
...... адрес памяти...... значение
a... 0x000002................... 5
b... 0x000010................... 0x000002
c... 0x000020................... 0x000010
Итак, ** c ссылается на адрес * b.
Теперь мой вопрос: почему этот тип кода,
int a = 5;
int *b = &a;
int *c = &b;
создать предупреждение?
Если целью указателя является просто сохранение адреса памяти, я думаю, что не должно быть иерархии, если адрес, который мы собираемся сохранить, относится к переменной, указателю, двойному указателю и т.д., поэтому тип ниже кода должен быть действительным.
int a = 5;
int *b = &a;
int *c = &b;
int *d = &c;
int *e = &d;
int *f = &e;