[英]pointer c++ on objects and variables
因为我目前正在学习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
非常感谢你!
你必须取消引用指针, ->
运算符只是取消引用和成员访问的语法糖:
代替
ptrUser->printAge();
你可以写
(*ptrUser).printAge();
实际上可以有两件事:
->
运算符 : 正如@alain在他的回答中指出的那样, ->
仅仅是语法糖,可以用*
和替代.
如:
(*ptrUser).printAge();
->
运算符,并想知道为什么不*ptrUser->printAge()
: 在这里,当你说*ptrUser = &John;
,您将John
的地址存储在名为ptrUser
的指针变量中。 换句话说, ptrUser
指向John
。 因此,当您想要访问John
的成员函数printAge()
时,您可以简单地执行以下操作:
ptrUser->printAge();
因为ptrUser
已经指向John
。
希望这是有帮助的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.