指针和引用运算符 (&)
Pointers and reference operator (&)
我正在学习c++,我在一本书上找到了这个:
#include <iostream>
using namespace std;
int main()
{
int Age = 30;
int* pInteger = &Age; // pointer to an int, initialized to &Age
// Displaying the value of pointer
cout << “Integer Age is at: 0x” << hex << pInteger << endl;
return 0;
}
书上说输出的是Age存储在内存中的地址
但是书中没有提到这个:
*pInteger = &Age;
pInteger = &Age;
这两个赋值的区别是什么?
你似乎被这一行弄糊涂了
int* pInteger = &Age; // pointer to an int, initialized to &Age
这里的*
符号将pInteger声明为指向int类型的指针。这被初始化(而不是赋值)为Age的地址,这是允许的,因为Age是int类型。
你可以输入
*pInteger = 45;
,这将赋值给pInteger所指向的整数。
也可以输入
int y = 35;
pInteger = &y;
将指针重新赋值为指向不同位置
如果你打破这个
可能会更容易理解 int* pInteger = &Age;
向下分为两步
int* pInteger;
声明一个指向int的指针类型的变量,然后
pInteger = &Age;
将Age的地址赋值给pInteger,因此pInteger现在指向一个特定的整数。
如果你写
*pInteger = 95;
你将给pInteger当前指向的任何值赋一个新值。
int* pInteger = &Age;
你是在声明变量并给它一个初始值,所以这与明显相似的
不同 *pInteger = &Age;
它使用了pInteger,但没有声明它所以这里你得到了Age的地址并试图将它赋值给pInteger所指向的对象,将地址赋值给int不是一件好事
int* pInteger = &Age;
不是赋值操作,而是初始化操作。这里,*
是类型- int*
的一部分,而不是整数*pInteger
,如下所示。
你问的两个是作业:
*pInteger = &Age;
pInteger = &Age;
区别在于第一个是非法的,第二个是可以的。这是因为&Age
的类型是int*
,而*pInteger
的类型是int
,将int*
赋值给int
是非法的。然而,pInteger
的类型是int*
,所以赋值是可以的。
pInteger
是指向int的指针,在第一种情况下初始化为Age
的地址(假设您指的是 int
*pInteger = &Age;
),在第二种情况下赋值为。
首先声明并初始化一个类型为int*
的变量
int* pInteger = &Age;
//| var type | var name | | value of type "int*" |
接下来我们尝试使用赋值:
pInteger = &Age;
//| var of type "int*" | | value of type "int*" |
*pInteger = &Age;
//| var of type "int" | | value of type "int*" |
最后一个是不正确的,直到我们将int*
转换为int
(如果我们的目标是使用像整数值一样的地址)。一元操作符解引用操作符*
意味着我们需要位于指定地址的东西
- 取消引用运算符不能重载
- 为什么在我的函数类型后使用引用运算符 (&) 允许我修改它返回的值?
- 标准库类型的赋值运算符的引用限定符
- 使用运算符 [] 引用 std::vector 上最后一个元素时出现问题<>
- 移动赋值运算符;尝试引用已删除的函数.我该如何解决这个问题?
- 为什么我的运算符 + 重载尽管是通过引用传递的,但仍调用我的复制构造函数?
- C++编程:运算符重载中的引用如何工作?
- 重载运算符*以获取对另一个类的实例的引用
- 使用 scope 运算符 (::) 引用另一个文件中的类
- 对运算符=使用通用引用,而不是多个重载
- 如何重载下标运算符 [] 以引用 2d STL 数组?
- 未定义的引用和运算符 << vs me
- 为什么我不能在运算符=中使用引用类型?
- C++:对函子重载调用运算符的未定义引用
- 运算符重载C++类中的引用返回
- 如何在C++中使用 new 运算符创建对动态创建的数组的引用?
- 对模板运算符的未定义引用,其定义位于同一头文件中
- 为什么在通过引用返回运算符分配时取消引用'this'指针?
- 如果可能的话,C++总是更喜欢右值引用转换运算符而不是常量左值引用吗?
- 运算符++:引用与值返回和未使用的参数