繁体   English   中英

指针c ++对象和变量

[英]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();

实际上可以有两件事:

  1. 你不知道->运算符

正如@alain在他的回答中指出的那样, ->仅仅是语法糖,可以用*和替代. 如:

(*ptrUser).printAge();
  1. 你知道->运算符,并想知道为什么不*ptrUser->printAge()

在这里,当你说*ptrUser = &John; ,您将John的地址存储在名为ptrUser的指针变量中。 换句话说, ptrUser指向John 因此,当您想要访问John的成员函数printAge()时,您可以简单地执行以下操作:

ptrUser->printAge();

因为ptrUser已经指向John

希望这是有帮助的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM