Я немного застрял на этом, и мне нужно было уточнить, что именно происходит. Я был бы очень признателен, если бы кто-нибудь мог мне помочь.C++ Pointer ПОЧЕМУ?
int i[][3] = {
{ 1, 2, 3 },
{ 4, 5, 6 }
};
int* pointy = &i[1][1];
int* copyPointy = pointy;
*pointy = 100;
pointy = &i[0][2];
cout << *pointy << endl;
cout << *copyPointy << endl;
Я хочу знать, что представляет собой следующую строку/означает:
int* copyPointy = pointy;
Я пытаюсь выяснить, почему *copyPointy
возвращается 100
, а не 3
? Если pointy
указывает на copyPointy
, а если адрес pointy
изменяется при выполнении инструкции pointy = &i[0][2];
, то не следует ли изменять адрес copyPointy
, и, следовательно, содержимое по этому адресу?
'pointy' указывает сначала на' & i [1] [1] ', а затем на' & i [0] [2] '. 'pointy' никогда не может указывать на' copyPointy', поскольку это не 'int **'. – user657267
Извините, я имел в виду, что не * если copyPointy указывает на pointy, то если адрес pointy изменяется, когда pointy = & [0] [2], не должен также меняться адрес copyPointy, и, следовательно, содержимое по этому адресу ? – halapgos1
Это ничего не меняет, ни точки, ни «copyPointy» не указывают друг на друга в любой точке (!). Тип указателя на указатель на 'int' будет' int ** ', это оба' int * '. – user657267