*
和 &
在 C++ 中有以下不同的使用方式和含义:
-
*
运算符:- 在声明中,
*
用于表示指针类型,例如int* ptr
表示ptr
是一个指向整数的指针。在这种情况下,*
是类型修饰符,用于指示变量是一个指针。 - 在使用时,
*
用于解引用指针,获取指针所指向的值。例如,int x = *ptr
表示将指针ptr
所指向的整数值赋给变量x
。 - 在使用时,
*
还可以用于动态内存分配(堆上分配),例如使用new
运算符来分配内存并返回指针。
- 在声明中,
-
&
运算符:- 在声明中,
&
用于表示引用类型,例如int& ref
表示ref
是一个引用类型的整数。在这种情况下,&
是类型修饰符,用于指示变量是一个引用类型。 - 在使用时,
&
用于取地址运算符,获取变量的内存地址。例如,int* ptr = &x
表示将变量x
的地址赋给指针ptr
。 - 在函数参数中,
&
用于传递引用参数。通过引用参数,可以直接更改实参的值,而不是传递副本。
- 在声明中,
综上所述,*
用于指针类型的声明、解引用和动态内存分配,而 &
用于引用类型的声明和取地址运算。这两个运算符在 C++ 中一起使用可以实现指针的传递、间接修改变量的值和动态分配内存等功能。