引用变量和 const 指针变量有啥区别? [复制]

Posted

技术标签:

【中文标题】引用变量和 const 指针变量有啥区别? [复制]【英文标题】:What is the difference between a reference variable and a const pointer variable? [duplicate]引用变量和 const 指针变量有什么区别? [复制] 【发布时间】:2010-12-02 07:13:17 【问题描述】:

可能重复:Difference between pointer variable and reference variable in C++

这是this question的延续

引用变量只是 const 指针变量的另一个名称吗?如果它们不同,声明为引用变量的变量和声明为 const 指针变量的变量有什么区别?

【问题讨论】:

除非您真的想问指针和 const 指针之间的区别,否则这是您链接到的问题的副本。 这已经在您所指的同一个问题中得到了回答。从第一个答案开始,除了可以重新分配之外的所有点都成立。 Difference between pointer variable and reference variable in C++ 的可能重复项 【参考方案1】:

只是为了好玩:) 引用不能为 NULL,但 const 指针可以。

【讨论】:

@Chusbad:第一反应也是:p【参考方案2】:

好的。问题是没有像reference variable这样的东西。参考根本不是变量。它不是一个对象。它实际上根本没有大小。它只是原始对象的替代名称。

检查一下:

struct A

   int i[5];
;

int main()

   std::cout << (sizeof(A&) == sizeof(A)) << std::endl;
   std::cout << (typeid(A&) == typeid(A)) << std::endl;
   return 0;


A& has the same size as A
A& has the same type as A

【讨论】:

对 C++03 正确,但 C++0x introduces the notion of reference variables.【参考方案3】:

引用变量只是 const 指针变量的另一个名称吗?

没有。

如果它们不同,声明为引用变量的变量和声明为 const 指针变量的变量有什么区别?

它们是完全不同的东西,这里没有足够的空间来解释你需要知道的一切。阅读this。实际上,请阅读entire FAQ。你会学到很多东西。

【讨论】:

以上是关于引用变量和 const 指针变量有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

C语言中用const声明全局变量赋初值和不赋初值有何区别?变量存放位置有啥不一样?

c语言里一般都说引用而不说使用,引用和使用有啥区别呢

指针和引用的区别

引用和指针的区别

C++中 const和constexpr的区别

C++中 const和constexpr的区别