У меня довольно хорошее понимание оператора разыменования, адрес оператора и указатели в целом.
Я, однако, запутываюсь, когда вижу такие вещи, как это:
int* returnA() {
int *j = &a;
return j;
}
int* returnB() {
return &b;
}
int& returnC() {
return c;
}
int& returnC2() {
int *d = &c;
return *d;
}
- В
returnA()
я прошу вернуть указатель; просто чтобы прояснить это, потому чтоj
является указателем? - В
returnB()
я прошу вернуть указатель; поскольку указатель указывает на адрес, причина, по которой работаетreturnB()
, заключается в том, что я возвращаю&b
? - В
returnC()
Я прошу вернуть адресint
. Когда я возвращаюсьc
, оператор&
автоматически добавляетсяc
? - В
returnC2()
Я снова прошу вернуть адресint
. Работает ли*d
, потому что указатели указывают на адрес?
Предположим, что a, b, c инициализируются целыми числами как Global.
Может ли кто-нибудь подтвердить, насколько я прав, со всеми четырьмя вопросами?