gpt4 book ai didi

c++ - 是否可以定义指向引用的指针?

转载 作者:可可西里 更新时间:2023-11-01 16:27:39 24 4
gpt4 key购买 nike

我正在阅读 C++ Primer,我注意到有一句话说:

Because references are not objects, they don't have addresses. Hence, we may not define a pointer to a reference.

但我只是写了一个示例代码并表明可以创建一个指向引用的指针(d 变量)。

代码贴在下面:

#include <iostream>
using namespace std;

int main(){
int a = 1024;

int &b = a; // a reference to int
int &c = b; // a reference to another reference
int *d = &b; // a pointer to a reference
int *(&e) = d; // a reference to a pointer

a = 100;
cout << b << endl;
cout << c << endl;
cout << *d << endl;
cout << *e << endl;
}

那么,我的测试有什么问题吗?还是C++ Primer中的说法有误?

我正在阅读 C++ Primer 第五版。该声明在第 52 页,2.3.2。

最佳答案

引述是正确的,因为您正在创建一个指向原始对象的指针,而不是它的引用。下面的代码显示了这个事实:

#include <stdio.h>
#include <stdlib.h>

int main() {
int a = 0;
// two references referring to same object
int& ref1_a = a;
int& ref2_a = a;
// creating a different pointer for each reference
int* ptr_to_ref1 = &ref1_a;
int* ptr_to_ref2 = &ref2_a;

printf("org: %p 1: %p 2: %p\n", &a, ptr_to_ref1, ptr_to_ref2);

return 0;
}

输出:

org: 0x7fff083c917c 1: 0x7fff083c917c 2: 0x7fff083c917c

如果你说你可以制作一个指针供引用,那么上面的输出应该是不同的。

关于c++ - 是否可以定义指向引用的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17097632/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com