IE盒子

搜索
查看: 121|回复: 0

【UE】C++中的*和&

[复制链接]

4

主题

11

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2023-1-17 10:58:39 | 显示全部楼层 |阅读模式
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 << "a: " << a << endl << "a's address:" << &a << endl;

    //2 此时p是一个指针,指向a所在的位置
    int* p = &a;
    cout << "p: " << p << endl;

    //3 声明p之后,在p之前添加*表示p指向内存的值
    cout << "p's value: " << *p << endl;

    //4 同时p也是 一个变量,在内存中也有一个地址储存它,但其地址不是a的地址
    cout << "p's address: " << &p << endl;

   //5 &p是一个内存地址,*&p表示&p指向地址内存空间的值,在这里表示a的地址
    cout << "*&p: " << *&p << endl;
  
    //6 刚才我们已经知道*&p是a的地址,那么**&p就表示a的值
    cout << "**&p: " << **&p << endl;
    return 0;
}
// 运行结果

1 a: 123 a's address:0xffffcc1c
2 p: 0xffffcc1c
3 p's value: 123
4 p'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++中*
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表