首页 > 试题广场 >

说一下引用和指针

[问答题]
请你介绍一下引用和指针

引用是给已经存在的变量起的别名,它本身不是一个变量,在函数参数中使用引用可以直接使用原始数据

指针是一个变量,指向一块内存,它的值是内存的地址

区别:

  • 初始化:引用必须在声明时初始化,指针则都可以
  • 赋值:引用不能重复赋值,指针可以重复赋值
  • 内存分配上:指针是一个变量需要占据内存,引用不需要
  • 大小:sizeof(引用)得到的是被引用对象的大小,sizeof(指针)得到的是4个字节
  • 多级:引用只有一级,指针有多级指针
  • const:有const指针,没有const引用
  • 自增:指针加的是一个单位(如二维数组),引用加的是值
发表于 2020-02-19 22:20:24 回复(0)
引用是已定义的变量的别名,它们指向相同的值和内存变量。主要用途是用作函数的形参和返回值类型,通过将引用变量用作参数,函数可以直接使用原始数据,
而不是其副本。
指针是一个变量,并指向一块内存,他的内容是所指内存的地址。引用是某块内存的别名,引用不改变指向。
共同点:
1)指针和引用作为形参时,可以直接修改作为实参传递过来的调用函数的变量,而不是副本。
区别:
1)引用必须在声明时初始化,引用不能为空;指针可以先声明再赋值,指针可以为空。
2)指针可以重复赋值;但是引用不能重复赋值,一旦引用重复赋值,将不能起到“别名”的作用,只是简单的改变初始化对象的内容化。
3)指针在使用过程中可能需要使用解除引用运算符*。
4)内存分配上:指针时变量需要占用内存;而引用不需要。
5)"sizeof(引用)"得到的是所指向的变量(对象)的大小;而"sizeof(指针)"得到的是指针本身的大小,即4个字节。
6)指针有多级;引用只能是一级。
7)可以有const指针;没有const引用。
8)指针和引用的自增(++)运算意义不一样
指针自加,比如 int a[2] = {0,10} ;int *pa =a;
pa++表示指针往后移动一个int的长度。指向下一个内存地址。及pa从指向a[0]变成指向a[1]
引用是值++;比如b是引用a[0]的,++表示a[0]的值++从0变为1;

发表于 2019-07-09 21:12:30 回复(0)
引用其实就是指针的封装
发表于 2019-01-17 02:21:08 回复(0)
引用就是取小名字
发表于 2020-05-04 19:44:31 回复(0)
634头像 634
指针是一个实体(一般情况下可以被多次赋值),而引用仅仅是个别名(不能被重复赋值)
从内存分配上看:
指针是变量需要占用内存,而引用不需要
两者作为形参时都是直接修改主函数中的变量是按地址传递的
发表于 2019-02-18 16:00:43 回复(2)