|
1
AMyActor2 a1;
AMyActor2* act = &a1;
a1.InterMethods();
act->InterMethods();
a1是变量
act是指针变量,&a1是a1的内存地址,所以act就是a1的内存地址。
因为act是指针,所以调用函数时使用->
2

注意上面的a1并不等于this。
3 核心示例
#include <iostream>
using namespace std;
int main() {
int a = 123;
//1 &a表示a在内存中的地址,也就是123在内存中的地址
cout << &#34;a: &#34; << a << endl << &#34;a&#39;s address:&#34; << &a << endl;
//2 此时p是一个指针,指向a所在的位置
int* p = &a;
cout << &#34;p: &#34; << p << endl;
//3 声明p之后,在p之前添加*表示p指向内存的值
cout << &#34;p&#39;s value: &#34; << *p << endl;
//4 同时p也是 一个变量,在内存中也有一个地址储存它,但其地址不是a的地址
cout << &#34;p&#39;s address: &#34; << &p << endl;
//5 &p是一个内存地址,*&p表示&p指向地址内存空间的值,在这里表示a的地址
cout << &#34;*&p: &#34; << *&p << endl;
//6 刚才我们已经知道*&p是a的地址,那么**&p就表示a的值
cout << &#34;**&p: &#34; << **&p << endl;
return 0;
}
// 运行结果
1 a: 123 a&#39;s address:0xffffcc1c
2 p: 0xffffcc1c
3 p&#39;s value: 123
4 p&#39;s address: 0xffffcc10
5 *&p: 0xffffcc1c
6 **&p: 123
总结:
由上可得 p = *&p
所以*&会互相抵消,没有意义。
由此继续推导:
p = &a ;
*p = *&a = a;
所以*p打印出来是123
参考:
C++ *和& - 林肯公园 - 博客园 (cnblogs.com)
c++ 中的符号* 和 &kangshuangzhu的博客-CSDN博客c++中* |
|