C++之&与*符号用法案例详解

 更新时间:2021年09月03日 14:25:17   作者:阿瓜呱呱  
这篇文章主要介绍了C++之&与*符号用法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

C++ 之 & 和 *

1.基本概念与二者区别

指针是一块内存的地址值,而引用是一块内存的别名。

从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。

而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。

引用://www.jb51.net/article/221789.htm

下面附上一段代码以便理解抽象的概念:

#include<iostream>
#include<string>
using namespace std;
int main()
{
	int a = 5, b = 10, c = 15;
	int *p1;	//指针可以不初始化
	int &d = b;	//引用必须初始化(相当于给一个人起外号要针对那个人)
	p1 = &a;	//p1指向a的地址
	cout << "a:" << a << endl << "a的地址:" << &a << endl ;
	cout << "b:" << b << endl << "b的地址:" << &b << endl;
	cout << "c:" << c << endl << "c的地址:" << &c << endl;
	cout << "p1(的地址):" << p1 << endl << "p1所指对象:" << *p1 << endl;
	cout << "d:" << d << endl << "d的地址:" << &d << endl;
	d = c;		//相当于b=d=c;
	p1 = &c;	//p1指向c的地址
	cout << endl <<"修改后:" << endl<<endl;
	cout << "a:" << a << endl << "a的地址:" << &a << endl;
	cout << "b:" << b << endl << "b的地址:" << &b << endl;
	cout << "c:" << c << endl << "c的地址:" << &c << endl;
	cout << "p1:" << p1 << endl << "p1所指对象:" << *p1 << endl;
	cout << "d:" << d << endl << "d的地址:" << &d << endl;
	system("pause");
	return 0;
}

从图中我们可以看出:

d=c并不改变d的地址,且d与b地址相同,
所以引用不能重新绑定并非意味不能 重新赋值,重新赋值只代表引用初始化时所绑定对象重新赋值

而指针p1则在指向a的地址后可重新指向c的地址,p1所指对象也随之改变。

2.定义时等号左右的不同含义

例如

int i=4;
int *p=&i;

左侧的*可看做与int一起组成的复合类型 int *,代表指向实数类型的指针
而右侧的&则为取地址符,p指向i的地址。

除了在定义语句中,一般情况下

int a = 5, b = 10;
int *p;
p = &a;
p = &b;		//p指向b(取b的地址)
*p = 2;		//*p相对于b,即b=2

3.复合类型的判断

注意:只有对指针的引用,没有指向引用的指针!(因为引用本身不是对象)

一句话原则:从右向左读,越靠近变量的符号越说明其本质
eg:int *&r=p;
&说明r的类型是引用,*说明 这个引用 是对指针的引用。

到此这篇关于C++之&与*符号用法案例详解的文章就介绍到这了,更多相关C++之&与*符号内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • c++中的前向声明用法解读

    c++中的前向声明用法解读

    这篇文章主要介绍了c++中的前向声明用法解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • 一篇文章彻底弄懂C++虚函数的实现机制

    一篇文章彻底弄懂C++虚函数的实现机制

    C++中的虚函数的作用主要是实现了多态的机制,基类定义虚函数,子类可以重写该函数,在派生类中对基类定义的虚函数进行重写时,需要在派生类中声明该方法为虚方法,这篇文章主要给大家介绍了关于如何通过一篇文章彻底弄懂C++虚函数的实现机制,需要的朋友可以参考下
    2021-06-06
  • Cocos2dx实现数字跳动效果

    Cocos2dx实现数字跳动效果

    这篇文章主要为大家详细介绍了Cocos2dx实现数字跳动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • 一篇文章带你了解C++中的显示转换

    一篇文章带你了解C++中的显示转换

    这篇文章主要介绍了C++11显示类型转换的优点,帮助大家更好的理解和学习c++,感兴趣的朋友可以了解下,希望能给你带来帮助
    2021-08-08
  • C++内存模型和名称空间详解

    C++内存模型和名称空间详解

    这篇文章主要给大家介绍了关于C/C++中的内存模型和名称空间详解,文中通过示例代码介绍的非常详细,对大家学习或者使用c/c++具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧
    2021-09-09
  • C++ std::array实现编译器排序

    C++ std::array实现编译器排序

    这篇文章主要介绍了C++ std::array实现编译器排序,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • C++实现图的邻接矩阵存储和广度、深度优先遍历实例分析

    C++实现图的邻接矩阵存储和广度、深度优先遍历实例分析

    这篇文章主要介绍了C++实现图的邻接矩阵存储和广度、深度优先遍历,实例分析了C++实现图的遍历技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • 一篇文章详解Qt中如何访问数据库

    一篇文章详解Qt中如何访问数据库

    Qt是一个广泛使用的跨平台应用程序框架,它提供了许多功能,包括数据库访问,这篇文章主要给大家介绍了关于Qt中如何访问数据库的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • 解析C++引用

    解析C++引用

    引用是C++引入的新语言特性,是C++常用的一个重要内容之一。在工作中发现,许多人使用它仅仅是想当然,在某些微妙的场合,很容易出错,究其原由,大多因为没有搞清本源。在本篇中将对引用进行详细讨论,希望对大家更好地理解和使用引用起到抛砖引玉的作用
    2021-06-06
  • 牛顿迭代法求多项式在1.5附近的值2*x的3次幂--4x平方+3*x-6=0的实现代码

    牛顿迭代法求多项式在1.5附近的值2*x的3次幂--4x平方+3*x-6=0的实现代码

    以下代码是使用了牛顿迭代法求多项式在1.5附近的值 2*x的3次幂 - 4x的平方 + 3*x -6=0的实例。需要的朋友参考下吧
    2013-05-05

最新评论