Unreal Engine C++(以及C++语言中),符号*
(星号)和&
(引用符号)有不同的含义,具体取决于它们在代码中的位置。它们的意义通常与指针和引用相关联。下面是对这两个符号的总结,包括它们在不同上下文中的用法。
1. *
(星号)
*
主要用于指针,具体含义根据位置不同可以分为两种:
1.1 声明指针
在声明变量时,*
用于表示该变量是一个指针,指向某个类型的内存地址。
int* Ptr; // 声明一个指向int类型的指针
这个例子表示Ptr
是一个指针,指向一个int
类型的数据。
1.2 访问指针所指向的数据(解引用)
当你使用*
操作符放在指针变量前时,表示访问该指针指向的值,即"解引用"指针。
int Value = 10; int* Ptr = &Value; // Ptr指向Value的地址 int DereferencedValue = *Ptr; // 解引用,DereferencedValue等于10
通过*Ptr
,你可以访问并修改Value
的值。
2. &
(引用符号)
&
主要用于引用和取地址操作,同样根据上下文有不同的含义:
2.1 取地址操作
当&
用于变量前面时,它表示取变量的内存地址。
int Value = 10; int* Ptr = &Value; // 获取Value的地址,并将其赋值给指针Ptr
在这个例子中,&Value
表示获取Value
的内存地址。
2.2 声明引用
在声明函数参数或变量时,&
可以用于创建一个引用。引用是原变量的别名,修改引用即修改原变量。
int Value = 10; int& Ref = Value; // Ref是Value的引用 Ref = 20; // 通过Ref修改Value的值,Value现在是20
与指针不同,引用不能为null
,而且必须在声明时初始化。
2.3 引用作为函数参数
当&
用于函数参数时,表示该参数是按引用传递的,这样可以避免传递数据的拷贝,直接对原始数据进行操作。
void ModifyValue(int& Ref) { Ref = 30; // 通过引用修改传递进来的变量 } int Value = 10; ModifyValue(Value); // 传递Value的引用,Value变成30
通过引用传递参数,可以减少内存拷贝,特别是在处理大数据结构时更加高效。
3. 总结用法
-
*
(星号):- 声明指针:用于指针类型声明,指向某个内存地址。例如:
int* Ptr;
- 解引用指针:访问指针指向的实际数据。例如:
int Value = *Ptr;
- 声明指针:用于指针类型声明,指向某个内存地址。例如:
-
&
(引用符号):- 取地址:用于获取变量的内存地址。例如:
int* Ptr = &Value;
- 引用声明:用于创建一个引用(别名)。例如:
int& Ref = Value;
- 按引用传递:用于函数参数,允许函数直接操作原始数据。例如:
void Function(int& Ref)
- 取地址:用于获取变量的内存地址。例如: