浅谈指针和引用

我们知道用指针和引用来定义函数形参的时候,都可以直接改变参的值。那么指针和引用有哪些区别呢?

我们先根据引用和指针的定义展开:引用是某个变量或者对象的别名,而指针则存储的是一个机器码地址,这个地址是某个具体变量或者对象的地址。因此区别有:

1)指针可以为空,但是引用不行

2)声明指针可以不指向任何对象,因此使用指针之前必须做判空操作,而引用则不必

3)引用一旦声明后,就不可以改变指向;但是指针可以,如++操作符,指针则指向下一个对象,而引用则改变的是指向对象的内容

4)引用的大小是所指变量的大小,而指针仅仅是个机器码 ,指针的大小永远都是4个字节,不管是几级指针

5)引用形式上漂亮

6)引用比指针安全,而指针的指向很灵活,容易产生野指针,比如多个指针指向一块内存,free掉一个,别的指针就成了野指针。



版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-31 20:57:39

浅谈指针和引用的相关文章

浅谈C/C++引用和指针的联系和区别

为什么C/C++语言使用指针? 答案:①一方面,每一种编程语言都使用指针.不止C/C++使用指针. 每一种编程语言都使用指针.C++将指针暴露给了用户(程序员),而Java和C#等语言则将指针隐藏起来了. "Everything uses pointers. C++ just exposes them rather than hiding them," It's easier to give someone an address to your home than to give a

浅谈指针的偏移

记得当初学习指针的时候,总是把指针和地址混为一谈,总以为说到指针就是指某个地址而已,后来加强对各类指针的认识以后,才认识到指针不止是简单的地址. 指针是一种类型,通过类型可以声明一个变量并保存一个内存地址,不同类型的指针对保存的地址会有不同的解释,编译器根据指针的类型(对应的偏移量)解引用出相应的数据. 首先在32位程序设计里,指针大小为4bytes,满足2^32 寻址范围. 到底偏移多少: 曾经探究过一个问题,代码如下: int a[4][2] = { 0, 1, 2, 3, 4, 5 ,7,

浅谈指针的比较

一.前言 有人说指针是C语言的灵魂,也有人说没学好指针就等于不会C语言. 虽然在现代C++中一般都是推荐尽量避免使用原生的raw指针,而是以smart pointer 和reference替代之.但是无论怎样,对于C/C++来说,指针始终是个绕不过去的坎.究其原因,是因为C/C++都是支持面向底层操作的语言,而面向底层操作就得能操纵内存,这个时候就需要指针了.为什么呢?个人觉得指针实际上就是对机器语言/ASM中的通过虚拟地址操作内存的这一行为的一种抽象. 例如 movl %eax, (%edx)

浅谈指针

指针:一个用来存储数据存储地址的变量. int a=10;  a变量里面存储的数据0 1按照int 的长度解析为数据 int *p=&a; p变量里面存储的数据0 1解析为地址,只是这个地址(这个地址是这段空间的首地址)标号的那段空间里面存储的是a的值,这里的p是给这段地址的取的名字用来给程序员看的,这里的a是给这段地址里面存储内容所取得名字来给程序员看的.

【C语言】 浅谈指针

指针是就是地址,是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址. 要搞清一个指针需要搞清指针的四方面的内容:指针的类型.指针所指向的 类型.指针的值或者叫指针所指向的内存区.指针本身所占据的内存区.让我们分别说明. 首先,先罗列出几种常见的类型: int p;   //这是一个普通的整型变量int *p;  //首先从P处开始,先与*结合,所以说明P是一个指针,然后再与int结合,说明指针所指向的内容的类型为int型.所以P是一个返回整形数据的指针 int p[3];  //首先从

Go浅谈指针

一:指针的定义 简单来讲,指针就是存放变量的地址,通过"*"号来读取地址里面存放的值 二:举例说明 由上图可知,由于指针指向的是内存地址,即变量存储值得真实地址,所以修改指针,即修改原变量数值. 原文地址:https://www.cnblogs.com/louis181214/p/10197785.html

转 浅谈C++中指针和引用的区别

浅谈C++中指针和引用的区别 浅谈C++中指针和引用的区别 指针和引用在C++中很常用,但是对于它们之间的区别很多初学者都不是太熟悉,下面来谈谈他们2者之间的区别和用法. 1.指针和引用的定义和性质区别: (1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元:而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已.如: int a=1;int *p=&a; int a=1;int &b=a; 上面定义了一个整形变量和一个指针变量p,该指针变量指向a

C++ 浅谈C++中指针和引用

浅谈C++中指针和引用的区别 指针和引用在C++中很常用,但是对于它们之间的区别很多初学者都不是太熟悉,下面来谈谈他们2者之间的区别和用法. 1.指针和引用的定义和性质区别: (1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元:而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已.如: int a=1;int *p=&a; int a=1;int &b=a; 上面定义了一个整形变量和一个指针变量p,该指针变量指向a的存储单元,即p的值是a存储单

浅谈C++中指针和引用的区别

指针和引用在C++中很常用,但是对于它们之间的区别很多初学者都不是太熟悉,下面来谈谈他们2者之间的区别和用法. 1.指针和引用的定义和性质区别: (1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元:而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已.如: int a=1;int *p=&a; int a=1;int &b=a; 上面定义了一个整形变量和一个指针变量p,该指针变量指向a的存储单元,即p的值是a存储单元的地址. 而下面2句定义了一