引用与指针的区别联系

引用不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名。

引用的特点:

  1. 多个变量可以引用一个变量
  2. 引用必须初始化
  3. 引用只能在初始化的时候引用一次,不能改变为再引用其他的变量。

const引用

void Test ()

{

int d1 = 4;

const int & d2 = d1;

d1 = 5;          // d1改变 d2的值也会改变。

//d2 = 6;        //错误!不能给常量(不能被修改的量)赋值

const int d3 = 1;

const int & d4 = d3;

//int&d5 = d3;

const int & d6 = 5;  // 常量具有常性,只有常引用可以引用常量

double d7 = 1.1;

//int& d8 = d7;   //错误!d7是double类型,d8是int,d7赋值给d8时要生成一个临时变量

// 即d8引用的是这个带有常性的临时变量,所以不能赋值。

const int& d9 = d7;

}

引用和指针的区别和联系

  1. 引用只能在定义时初始化一次,之后不能改变指向其它变量(从一而终);指针变量的值可变。
  2. 引用必须指向有效的变量,指针可以为空。
  3. sizeof指针对象和引用对象的意义不一样。sizeof引用得到的是所指向的变量的大小,而sizeof指针是对象地址的大小。
  4. 指针和引用自增(++)自减(--)意义不一样。
  5. 相对而言,引用比指针更安全。

总结一下:

指针比引用更灵活,但是也更危险。使用指针时一定要注意检查指针是否为空。指针所指的地址释放以后最好置0,否则可能存在野指针问题。

时间: 2024-08-08 13:58:09

引用与指针的区别联系的相关文章

引用与指针的区别

引用:相当于给一个变量取的别名,它本身不是一种数据类型,因此不战用存储空间,不能建立数组的引用 引用作为函数参数:当发生函数调用时,用引用作为参数,在内存中并不会产生实参的副本,也不会给引用这个形参分配空间, 而是直接对实参进行操作,但如果用一般变量作为函数参数,则会给它分配空间,并且作为实参的副本,如果 传递的是对象,还将调用拷贝构造函数 引用与指针的区别:相同点:引用与指针都会导致实参对象值的改变 不同点:a.引用不用分配空间,指针要分配空间,且指针作为形参在调用时,必须用变量的地址作为实参

引用和指针的区别

引用(references)使用"."操作符,指针(pointers)使用"*"和"->"操作符,这是两者最基本也是最熟悉的区别了,应该不用详说. 首先,没有所谓的null reference.一个reference必须总代表某个对象,因此C++要求references必须有初值: string& rs://错误!references必须被初始化 string s("xyzzy"); string& rs

C++中引用与指针的区别

请说出C++中引用和指针的区别.(华为.腾讯.阿里等) 参考答案: (1)当引用被创建时,它必须被初始化.而指针则可以在任何时候被初始化. (2)一旦一个引用被初始化为指向一个对象,它就不能被改变为对另一个对象的引用.而指针则可以在任何时候指向另一个对象. (3)不可能有NULL引用.必须确保引用是和一块合法的存储单元关联. 进一步解析: 指针和引用都是 C++ 中的基本语法成份,它们既有联系,也有不同之处. 它们都是地址的概念,其中指针指向一块内存,它的内容是所指内存的地址:而引用是某块内存的

[转载]C++中引用与指针的区别(详细介绍)

本文转载自http://www.cnblogs.com/tracylee/archive/2012/12/04/2801519.html C++中的引用与指针的区别 指向不同类型的指针的区别在于指针类型可以知道编译器解释某个特定地址(指针指向的地址)中的内存内容及大小,而void*指针则只表示一个内存地址,编译器不能通过该指针所指向对象的类型和大小,因此想要通过void*指针操作对象必须进行类型转化.     ★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址: 引

引用和指针的区别,数组和指针的区别

一:引用和指针的区别 1:引用并非对象,它只是为一个已存在的对象所起的另外一个名字,必须初始化,而且无法改变它绑定的对象,之后每次使用这个引用都是访问最初绑定的那个对象. 2:指针本身是对象,可以不用初始化,可以改变指针指向的对象 二:指针与数组的区别 指针 数组 保存数据的地址 保存数据 间接访问数据 直接访问 通常用于动态数据结构 通常用于存储固定数目数据类型相同的元素 相关操作malloc(),free()等 隐式分配和删除 同常指向匿名数据 自身即为数据名 在C语言中对于下面的两种情况,

引用 与 指针的区别 -- C

简单的说: 引用 -- 变量别名 指针 -- 存地址 #include <stdio.h> int main() { /* 声明一个引用reiv1,同时初始化,也就是reiv1是iv的别名*/ int iv; int & reiv = iv; /* 声明一个引用,但引用不能为空,必须同时初始化*/ // int & reiv1; /*错误:'reiv1'声明为引用却未被初始化 */ iv = 13; printf("iv = %d\n", iv); prin

C++引用与指针的区别

转!!!! http://blog.csdn.net/wangqiulin123456/article/details/8464418 虽然使用引用和指针都可以间接访问另一个值,但他们之间有两个重要区别: 引用总是指向某个对象,定义引用没有初始化是错误的. 赋值行为的差异,给引用赋值修改的是该引用所关联的对象的值,而并不是使引用与另一个对象关联.引用一经初始化,就始终指向同一个特定对象. ★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址:引用是某块内存的别名. ★

C语言学习笔记 (002) - C++中引用和指针的区别(转载)

下面用通俗易懂的话来概述一下: 指针-对于一个类型T,T*就是指向T的指针类型,也即一个T*类型的变量能够保存一个T对象的地址,而类型T是可以加一些限定词的,如const.volatile等等.见下图,所示指针的含义: 引用-引用是一个对象的别名,主要用于函数参数和返回值类型,符号X&表示X类型的引用.见下图,所示引用的含义: 2.指针和引用的区别 首先,引用不可以为空,但指针可以为空.前面也说过了引用是对象的别名,引用为空--对象都不存在,怎么可能有别名!故定义一个引用的时候,必须初始化.因此

引用与指针的区别【转】

本文转载自;http://blog.csdn.net/dujiangyan101/article/details/2844138 指针和引用的区别 (1)引用总是指向一个对象,没有所谓的 null reference .所有当有可能指向一个对象也由可能不指向对象则必须使用 指针. 由于C++ 要求 reference 总是指向一个对象所以 reference要求有初值. String & rs = string1; 由于没有所谓的 null reference 所以所以在使用前不需要进行测试其是