Прошло много времени с тех пор, как я что-то кодировал на C ++. Когда я пытался помочь другому человеку в качестве преподавателя CIS, он хотел знать, почему необходимо иметь знак амперсанда рядом с указателем на int.
Я подумал, что если вы передадите указатель по ссылке и укажете на что-то еще, после того, как вы передадите, main узнает, что val будет равен тому, что вы установили равным.
Ниже приведен пример, демонстрирующий то, что я пытаюсь сказать.
Это правильно?
//main function
int variable = 0;
int* val = &variable;
function1(val);
cout << *val << endl;
function2(val);
cout << *val << endl;
//Passing in a pointer with reference.
void function1(int*& value)
{
int variable = 9;
value = &variable;
}
//Passing in a pointer without reference.
void function2(int* val)
{
int variable = 9;
value = &variable;
}
Я предполагаю, что программа выдаст 9 вместо 8 или 0. Надеюсь, это даст вам, ребята, четкое представление о том, что я пытаюсь спросить.