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++中的一维数组和二维数组,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • C 转移表/转换表的深入分析

    C 转移表/转换表的深入分析

    本篇文章是对c语言中转移表/转换表进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C语言学生信息管理系统设计与实现

    C语言学生信息管理系统设计与实现

    这篇文章主要为大家详细介绍了C语言学生信息管理系统设计与实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • C语言完整实现12种排序算法(小结)

    C语言完整实现12种排序算法(小结)

    本文主要介绍了C语言完整实现12种排序算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • C++中Cbitmap,HBitmap,Bitmap区别及联系

    C++中Cbitmap,HBitmap,Bitmap区别及联系

    这篇文章主要介绍了C++中Cbitmap,HBitmap,Bitmap区别及联系的相关资料,需要的朋友可以参考下
    2015-06-06
  • C++获取类的成员函数的函数指针详解及实例代码

    C++获取类的成员函数的函数指针详解及实例代码

    这篇文章主要介绍了C++获取类的成员函数的函数指针详解及实例代码的相关资料,需要的朋友可以参考下
    2017-02-02
  • 如何用C写一个web服务器之基础功能

    如何用C写一个web服务器之基础功能

    C语言是一门很基础的语言,程序员们对它推崇备至,本文将带着大家来看一下,如何用C写一个web服务器。
    2021-05-05
  • 详解C语言中结构体的自引用和相互引用

    详解C语言中结构体的自引用和相互引用

    这篇文章主要介绍了C语言中结构体的自引用和相互引用,详细解析了结构体中指针的指向情况,需要的朋友可以参考下
    2016-04-04
  • c++10进制转换为任意2-16进制数字的实例

    c++10进制转换为任意2-16进制数字的实例

    下面小编就为大家带来一篇c++10进制转换为任意2-16进制数字的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • c++中虚函数的实现详解

    c++中虚函数的实现详解

    众所周知探索c++对象内部的实现是一件非常有趣的事情,虚函数在c++中的实现机制就是用虚表和虚指针,但是具体是怎样的呢?下面这篇文章就来给大家实际检验一下 Visual Studio 2013 编译器在无优化条件下,虚函数的实现。有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-12-12

最新评论