栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

简单了解C++中的指针和引用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

简单了解C++中的指针和引用

这篇博客主要是简单讲解一下指针和引用区别 一、指针

在比较指针和引用前,我们先了解一下这两个东东是个什么

1.指针:维基百科是这样解释,指针是编程语言中的一类数据类型及其对象或变量,用来表示或存储一个存储器地址,这个地址的值直接指向(points to)存在该地址的对象的值。
  • 简单地说它其实就是用来放地址的,你把一个数据的地址给它,你就能通过这个指针中的地址找到这个数据。
  • 所以可以说指针本质就地址,通过对它,你就能直接对内存中的数据直接进行操纵,这也是C和C++相对于其它语言来说运行速率较快的本质之一。
2.代码解释示例
#include

int main()
{
	int a = 10; //定义整型变量a
    
	//1、指针的定义
	//定义一个没有初始化的指针,p指向随机地址
    //int * 定义一个整形指针,在定义指针时,*号是指针的标志
	int * p;

	//指针变量赋值
	p = &a; //指针指向变量a的地址
	std::cout << &a << std::endl; //打印数据a的地址
	std::cout << p << std::endl;  //打印指针变量p
	//输出的两个结果是一样的,因为指针就是地址
    
	//2、指针的使用
	//下面*p这个操作叫解引用
    //简单理解为解析p指向的地址所存储的值
	std::cout << "*p = " << *p << std::endl;
	//*p = 10
	return 0;
}
二、引用 1.引用:引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。 2.代码解释示例
#include 

int main()
{

    int a = 10;
    //引用的定义

    //下面语句可以理解为把b的地址取出,换成a的地址
    int &b = a; 
    // int &b = 10;错误,定义时不能等于实参## 
    //  int &c;错误,引用定义时需要给它赋值

    std::cout << "a = " << a << std::endl;
    std::cout << "&b = " << &b << std::endl;
    //输出结果第一个输出a的值,第二个输出b的地址,也是a的地址,用16进制表示

    // b = 100;

    // std::cout << "a = " << a << std::endl;
    // std::cout << "b = " << b << std::endl;

    return 0;
}
三、两者的相同点和不同点 1.相同点
  1. 两者本质上都是指针,指针指向的内容都是地址,引用的本质在c++内部实现是一个指针常量.
2.不同点
  1. 引用初始化后,指向不能变,但指向的值能够改变,其实就是指针常量,而指针以改变指向也可以改变指向的值。
  2. 引用使用时无需解引用(*),指针需要解引用,引用跟本尊一样用就行
  3. 引用不能为空,指针可以为空
  4. 指针和引用的自增运算意义不一样,指针是对地址移动,而应用对数值加一
  5. 程序为指针变量分配内存区域,而引用不需要分配内存区域
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/925706.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号