当前位置:  开发笔记 > 编程语言 > 正文

为什么在定义指针时我们使用"type*var"而不是"type&var"?

如何解决《为什么在定义指针时我们使用"type*var"而不是"type&var"?》经验,为你挑选了1个好方法。

我对C++比较陌生(大约一年的经验,开关).我很好奇导致决定type * name作为定义指针的语法的原因.在我看来,该语法应该是type & name作为&符号用于其他地方的代码来引用变量的内存地址.所以,要使用传统的int指针示例:

int a = 1;
int * b = &a;

会成为

int a = 1;
int & b = &a

我确定有一些原因,我只是没有看到,我很想听到C++老手的一些意见.

谢谢,-S



1> AraK..:

C++采用C语法.正如" C语言的开发 "(作者Dennis Ritchie)所揭示的那样,C*用于类型声明中的指针,因为决定使用类型语法.

对于[复合类型]的每个对象,已经有一种方法可以提及底层对象:索引数组,调用函数,*在指针上使用间接运算符[ ].类比推理导致了一个声明语法,用于反映名称通常出现的表达式语法的名称.从而,

int i, *pi, **ppi;

声明一个整数,一个指向整数的指针,一个指向整数指针的指针.这些声明的语法反映了在表达式中使用i,*pi和**ppi都会产生int类型的观察结果.

这是一个更复杂的例子:

int *(*foo)[4][];

此声明意味着表达*(*foo)[4][0]具有类型int,并从该(和[]具有的优先级高于一元*)可以解码的类型:foo是一个指针,指向指针型数组的大小为4的阵列.

C++中采用了这种语法,以便与C兼容.另外,不要忘记C++在声明中有用.

int & b = a;

上面的行表示引用另一个类型变量的引用变量int.引用和指针之间的差别大致是引用只是初始化,并且您无法更改它们指向的位置,最后它们总是自动解除引用.

int x = 5, y = 10;
int& r = x;

int sum = r + y; // you do not need to say '*r' automatically dereferenced.

r = y; // WRONG, 'r' can only have one thing pointing at during its life, only at its infancy ;)

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有