Чтобы было ясно, я знаю о указателе на концепцию указателя в C и разыменовании двойных, тройных указателей. Единственное сомнение у меня в следующей программе, которую я написал:
#include<stdio.h>
int main(){
int a;
int* p;
a=5;
p=&a;
int **q;
printf("*p=%d\n",*p);
printf("*q=%d\n",*q);
}
Теперь я знаю, что программа довольно глупая и не имеет смысла, но это не проблема. Вопрос ПОЧЕМУ?
Почему вывод такой:
*p=5
*q=1
Почему * q = 1 при каждом запуске?
Также стоит иметь в виду, если я сейчас объявлю *** р;
И добавьте следующую строку:
printf("*r=%d\n",*r);
Теперь вывод:
*p=5
*q=-40821602 //garbage
*r=1
Теперь * r = 1. ЗАЧЕМ?
То же самое касается **** s. В этом случае * q, * r - мусор, а * s = 1. Почему?