C/C++

Если указатель уже объявлен как указатель то при повторном объявлении мы обращаемся не к указателю а к адресу ссылки?

 int* pScore = 0; 
int score = 1000;
//первый вариант
pScore = &score;

int* pScore = 0;
int score = 1000;
//второй вариант
*pScore = &score;
ТГ
Тимур Ганиев
71 212
Мне не нравится в вашем подходе int* - конечно, для профи понятно, но для обучения я бы сказал, что тип в начале, а всякие «черные дыры» перед конкретной переменной. Вот поэтому вам пример и результат работы (да, тут & еще ссылка, да еще две, чтобы разобрались. А где-то от переменной - это взятие адреса):
 #include  
using namespace std;
int main(int argc, char** argv)
{
int *pScore=0, Score=1000, &sScore=Score, newScore=5000, &sScore2=sScore;

cout
Bakyt Sultankulov
Bakyt Sultankulov
59 963
Лучший ответ
Повторное объявление переменной в одной и той же области видимости, а указатель – это переменная, которая хранит адрес первого байта объекта в памяти, приводит к ошибке компиляции. Скорее всего в приведённом примере речь идёт о повторном обращении к указателю, причём абсолютно бесполезном. Так как происходит самоприсваивание. Пример аналогичного кода:
 int v = 5000;
int* p = &v;
*p = v;
С таким же успехом можно написать:
 int v = 5000;
v = v; // этот код вполне себе валиден
ОП
Олег Поляков
71 856
Это пример Ошибки во втором примере. Повторного обьявления тут нет.
int *pScore = 0; //обьявляем пустой ( = 0) указатель на ячейку типа инт.
int Score = 1000; //обьявляем переменную int Score = 1000.
*pScort = &Score; //двойная ошибка - попытка разыменовать пустой указатель и присвоить типу int указатель на int.
(повторное обьвление выглядело бы int* pScort = &Score )
Да, мы обращаемся к адресату, ты верно мыслишь
Касым Билал
Касым Билал
4 615