C++ Primer中&、*符号的多重定义与int *p和int* p的区别讲解

 更新时间:2019年04月11日 12:10:33   作者:yangyongUestc  
今天小编就为大家分享一篇关于C++Primer中&、*符号的多重定义与int *p和int* p的区别讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

&*这样的符号,既能用作表达式里的运算符,也能作为声明的一部分出现,符号的上下文决定了符号的意义:

int i = 42;
int &r = i;    //&紧随类型名出现,因此是声明的一部分,r是一个引用
int *p;       //*紧随类型名出现,因此是声明的一部分,p是一个指针p
p = &i;      //&出现在表达式中,是一个取地址符
*p = i;       //*出现在表达式中,是一个解引用符
int &r2 = *p;  //&是声明的一部分,*是一个解引用符

在声明的语句中,&*用于组成复合类型;在表达式中,他们的角色又转变成运算符。在不同场景下出现的虽然

是同一个符号,但是由于含义截然不同,所以我们完全可以把他们当做不同的符号来看待。

根据C++Primer介绍:

对于int* p(这种写法合法,但是容易造成误导),其基本数据类型是int,后面的*其实是声明符。在一组公用的数据类型后面可以使用不同的声明符。例如:

int i =1024, *p = &i, &r = i;    //i是一个int类型的数据,p是一个int型的指针,r是一个int型引用。

对于int *p,其和int* p的含义一样,都表示int类型的指针变量p。

但是将声明符紧跟着变量名是一种更容易理解的做法。否则可能会出现误导现象:

例如

 int* p1, p2;表示含义是p1是一个int型的指针,p2是一个int型变量。而不是p1,p2都是指针变量,它们共用的是基本数据类型部分。

如果写成int *p1,p2;则和上式表示的含义完全一样,但是更加清晰,不会造成误导。

不过对于以上两种写法的使用,主要看个人的习惯,但是最好不要混用。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • c语言 字符串的拼接和分割实例

    c语言 字符串的拼接和分割实例

    今天小编就为大家分享一篇c语言 字符串的拼接和分割实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • C++基本用法实践之移动语义详解

    C++基本用法实践之移动语义详解

    移动(move)语义是C++引入了一种新的内存优化,以避免不必要的拷贝,下面小编就来和大家简单聊聊C++中移动语义的相关使用吧,希望对大家有所帮助
    2023-07-07
  • C++驱动bash的实现代码

    C++驱动bash的实现代码

    这篇文章主要介绍了C++驱动bash的实现代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11
  • C/C++详解实现二层转发

    C/C++详解实现二层转发

    数据链路层是开放系统互连 (OSI) 模型中的第二层,该层用于通过 LAN 等单一网络进行通信的节点,第二层数据包不能从一个网络传输到另一个网络。而二层转发是根据报文的目的MAC直接进行转发,转发过程中不用对报文的头部做任何的修改
    2022-05-05
  • 利用Matlab制作环形相册效果详解

    利用Matlab制作环形相册效果详解

    这篇文章主要为大家介绍了如何利用Matlab制作出环形相册的效果,文中的示例代码讲解详细,对我们学习Matlab有一定帮助,需要的可以参考一下
    2022-03-03
  • 浅谈2路插入排序算法及其简单实现

    浅谈2路插入排序算法及其简单实现

    这篇文章主要介绍了浅谈2路插入排序算法及其简单实现,虽算不上是常用的排序方法,但在数据库等方面依然有用上的机会,需要的朋友可以参考下
    2015-08-08
  • C语言中冒泡排序算法详解

    C语言中冒泡排序算法详解

    大家好,本篇文章主要讲的是C语言中冒泡排序算法详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • C++实现顺序表的常用操作(插入删出查找输出)

    C++实现顺序表的常用操作(插入删出查找输出)

    实现顺序表的插入,删除,查找,输出操作在C语言中经常用到。下面小编给大家整理实现代码,一起看下吧
    2016-08-08
  • 详解C语言中strpbrk()函数的用法

    详解C语言中strpbrk()函数的用法

    这篇文章主要介绍了详解C语言中strpbrk()函数的用法,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • C++11 写一个只触发一次槽函数的Qt connect函数

    C++11 写一个只触发一次槽函数的Qt connect函数

    这篇文章主要为大家介绍了C++11 写一个只触发一次槽函数的Qt connect函数实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09

最新评论