因为我目前正在学习C ++中的指针,所以我想知道语法。因此,当我想在对象上使用指针时,我不必取消引用它,以便访问类属性。当我只想在简单变量上使用指针时,我必须使用*来改变它的值。
那么为什么我不必使用*作为对象?因为我认为我只会更改内存地址。
对象:
int age = 20;
User John(age);
User *ptrUser = &John;
ptrUser->printAge(); // 20 (why no *ptrUser->printAge() ??? )
cout << ptrUser // 0x123456...
变量:
int a = 10;
int *ptrA = &a;
*ptrA = 20;
cout << a // 20
非常感谢!
答案 0 :(得分:7)
你必须取消引用指针,->
运算符只是取消引用和成员访问的语法糖:
而不是
ptrUser->printAge();
你可以写
(*ptrUser).printAge();
答案 1 :(得分:0)
实际上可以有两件事:
->
operator:正如@alain在答案中所指出的,->
仅仅是语法糖,可以用*
和.
代替:
(*ptrUser).printAge();
->
运算符,并想知道为什么不*ptrUser->printAge()
:在这里,当您说*ptrUser = &John;
时,您将John
的地址存储在名为ptrUser
的指针变量中。换句话说,ptrUser
指向John
。因此,当您想要访问printAge()
的成员函数John
时,您可以执行以下操作:
ptrUser->printAge();
因为ptrUser
已经指向John
。
希望这有用。