C++引用与指针关系 对不起,对于NOOB问题,我只是对C++中指针和引用的关系有点困惑。 < C++中的下列行为中哪一个是合法的?< /P> 指针对指针; 指向引用的指针; 对指针的引用; 引用对引用的引用;

C++引用与指针关系 对不起,对于NOOB问题,我只是对C++中指针和引用的关系有点困惑。 < C++中的下列行为中哪一个是合法的?< /P> 指针对指针; 指向引用的指针; 对指针的引用; 引用对引用的引用;,c++,pointers,reference,relationship,C++,Pointers,Reference,Relationship,我知道指针指向指针是完全合法的,即: int* p; *p = 5; int ** pp; *pp = p; 我不知道我做的是否正确 有人能用一些非琐碎的例子为我澄清一下吗? 多谢各位 C语言中指针与引用的关系++ 没有。没有关系。他们完全不同 < C++中的下列行为中哪一个是合法的?< /P> 指向指针的指针和指向指针的引用。指向引用的指针和指向引用的引用不存在 我不知道我做的是否正确 您没有:您发布的代码段调用未定义的行为,因为您正在取消对未初始化指针的引用 C语言中指针与引用的关系++

我知道指针指向指针是完全合法的,即:

int* p;
*p = 5;
int ** pp;
*pp = p;
我不知道我做的是否正确

有人能用一些非琐碎的例子为我澄清一下吗? 多谢各位

C语言中指针与引用的关系++

没有。没有关系。他们完全不同

< C++中的下列行为中哪一个是合法的?< /P> 指向指针的指针和指向指针的引用。指向引用的指针和指向引用的引用不存在

我不知道我做的是否正确

您没有:您发布的代码段调用未定义的行为,因为您正在取消对未初始化指针的引用

C语言中指针与引用的关系++

没有。没有关系。他们完全不同

< C++中的下列行为中哪一个是合法的?< /P> 指向指针的指针和指向指针的引用。指向引用的指针和指向引用的引用不存在

我不知道我做的是否正确

您没有:您发布的代码段调用未定义的行为,因为您正在取消对未初始化指针的引用。

您可以:

指向指针的指针:int**i 指针的引用:int*&i 你不能有:

指向引用的指针 参考文献 你可以有:

指向指针的指针:int**i 指针的引用:int*&i 你不能有:

指向引用的指针 参考文献 指向指针的指针:

您的示例显示了指向指针的指针在语义上是正确的,只是您没有为p分配内存

指向引用的指针:

没有这样的事

对指针的引用:

对指针的引用与对非指针的引用的行为方式相同。它们允许通过另一个对象对对象进行别名。例如:

int *p = new int;
int *& ref = p;

ref = new int(5);

std::cout << *p; // 5
在C++中,我们可以简单地使用指针来引用,所以这不是明确需要的:

void f(int *&ptr)
{
    ptr = new int(10);
}

int *p;
f(p);
参考文献:

没有这样的事。你在考虑T&&吗?这是一个右值引用,是指针指向指针的一个重要方面:

您的示例显示了指向指针的指针在语义上是正确的,只是您没有为p分配内存

指向引用的指针:

没有这样的事

对指针的引用:

对指针的引用与对非指针的引用的行为方式相同。它们允许通过另一个对象对对象进行别名。例如:

int *p = new int;
int *& ref = p;

ref = new int(5);

std::cout << *p; // 5
在C++中,我们可以简单地使用指针来引用,所以这不是明确需要的:

void f(int *&ptr)
{
    ptr = new int(10);
}

int *p;
f(p);
参考文献:


没有这样的事。你在考虑T&&吗?这是一个有价值的参考资料,是的一个重要方面。

第一件事是试图理解基本概念是什么。指针是保存另一个对象地址的变量。引用是另一个对象的别名,即为现有对象创建新名称

这里最重要的是,在初始化引用之后,名称指的是真实对象,而不是引用

有鉴于此

你能有一个指向指针的指针吗

是的,指针是一个保存地址的变量。另一个指针可能包含第一个指针的地址

你能给我一封推荐信吗?i、 你能给我一个别名吗 化名

不,别名表示以其他名称居住在其他地方的真实对象。可以创建引用同一对象的新别名,但不能为别名创建别名

你能引用一个指针吗?i、 你能给指针加别名吗

是的,您可以引用指针类型的变量。变量保存pointer类型或int类型的对象这一事实无关紧要,它是一个变量,您可以创建一个别名

你能创建一个指向引用的指针吗?i、 e.能否创建指向别名的指针


不,别名只是一个变量的另一个名称,您可以有一个指向原始变量的指针,要获得它,您可以使用原始名称或别名,但不能有指向别名的指针。

首先要了解基本概念是什么。指针是保存另一个对象地址的变量。引用是另一个对象的别名,即为现有对象创建新名称

这里最重要的是,在初始化引用之后,名称指的是真实对象,而不是引用

有鉴于此

你能有一个指向指针的指针吗

是的,指针是一个h 我有一个地址。另一个指针可能包含第一个指针的地址

你能给我一封推荐信吗?i、 你能给我一个别名吗 化名

不,别名表示以其他名称居住在其他地方的真实对象。可以创建引用同一对象的新别名,但不能为别名创建别名

你能引用一个指针吗?i、 你能给指针加别名吗

是的,您可以引用指针类型的变量。变量保存pointer类型或int类型的对象这一事实无关紧要,它是一个变量,您可以创建一个别名

你能创建一个指向引用的指针吗?i、 e.能否创建指向别名的指针


不,别名只是一个变量的另一个名称,您可以使用指向原始变量的指针,要获得它,您可以使用原始名称或别名,但不能使用指向别名的指针。

谢谢您的回答!对不起,我不知道用什么词来形容我的问题。我正试图得到一些我在问题中所说的不平凡的例子。这就是为什么我没有选择你的答案,但这显然是对其他人有用的答案。谢谢你的回答!对不起,我不知道用什么词来形容我的问题。我正试图得到一些我在问题中所说的不平凡的例子。这就是为什么我没有选择你的答案,但它显然对其他人来说是有用的答案。你能转发链接吗?404.. :您的无引用指针示例第二个示例有缺陷,它既不是C,也没有修改函数参数。@EmmaWang我已将链接更改为,您可以重新发布链接吗?404.. :您的无引用指针示例第二个示例有缺陷,它既不是C,也没有修改函数参数。@EmmaWang我已将链接更改为