指针和引用、值传递和引用传递

1、指针和引用

指针是一个变量,它存储的是内存地址;引用和原来的变量是同一个,对引用修改会改变原变量,而修改指针只是修改了指向的内存

可以有const指针、但是没有const引用;指针可以多级int **p;引用只有1级 int &&p不合法

指针可空,引用必须初始化;指针可以修改,可以指向别的变量;引用不能修改,只能是那个变量的引用

2、值传递和引用传递

值传递,会创建变量的一个临时副本,对它修改不会改变原变量

引用传递,因为引用是原变量的一个别名,对引用修改会改变原值

指针作为函数参数时,本质也是值传递,改变指针没效果,改变*p会修改它指向的变量

3、指针数组和指向数组的指针、指针函数和函数指针

int *p[4];存储指针的数组          int (*p)[4];指向数组首地址的指针

int * f();返回值为指针             int (*p)指向函数地址的指针

4、const修饰符

const int *p表示 *p不可修改                   int * const p 表示p不可修改

const在*左边,修饰*p, 在右边修饰p

时间: 2024-10-13 17:09:27

指针和引用、值传递和引用传递的相关文章

JavaScript-原始值和引用值

一.原始值和引用值的概念 在 ECMAScript 中,变量可以存在两种类型的值,即原始值和引用值. 1.1 原始值 (1)原始值指的是 原始类型 的值,也叫 基本类型,例如 Number.Stirng.Boolean.Null.Underfined . (2)存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置. (3)注意 在许多语言中,字符串都被看作引用类型,而非原始类型,因为字符串的长度是可变的.ECMAScript 打破了这一传统. 1.2 引用值 (1)引

值传递,指针传递;引用传递(c++独有)本质

要理解值传递.指针传递和引用传递的区别,主要要理解函数的实参和形参,函数的作用域(自动变量.栈),内存的布局以及指针和引用的特点.这里主要总结三种参数传递方式使用的主要场合. 值传递:只给函数提供输入值,需要复制开销,大对象很少使用值传递. 指针传递:可以改变指针指向内容的值,但是不能改变指针本身,无需复制开销.如果需要改变指针本身,可以使用二重指针或者指针引用. 引用传递:除了提供输入值外,还返回操作结果,无需复制开销. #include<stdlib.h> //值传递,函数体内变量n是参数

C++中的值传递 指针传递 和 引用传递

C++中参数传递有三种:传递参数值.传递参数地址.传递参数的引用. 一.概念分解 1. 值 2. 指针 指针从本质上讲 就是存放 变量地址的 一个变量, 在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向地址中所存放的数据的改变. 3. 引用 引用是一个别名,在逻辑上不独立,它的存在具有依附性,所以引用必须在一开始就被初始化,而且在其生命周期中是不能改变的其引用的对象(即不能重新赋值,自始至 至终都只能依附于同一个变量) 二.概念详解 1. 值传递: 形参是实参的拷贝,改变形参的值

c++中函数参数传递(值传递、指针传递,引用传递)进一步认识

概念 首先从概念上来说一下这几种函数传参方式及区别: 1.值传递:形参是实参的拷贝,改变函数形参的值并不会影响外部实参的值,这是最常用的一种传参方法,也是最简单的一种传参方法,只需要传递参数,返回值那是return考虑的: 2.指针传递:指针传递参数从本质上来说也是值传递,它传递的是一个地址.[值传递过程中,被调函数的形参作为被调函数的局部变量来处理,即在函数内的栈中开辟内存空间以存放由主调函数放进来的实参的值,从而成了实参的一个副本(记住这个,函数内参数的是实参的副本)].由于指针传递的是外部

【转载】C++ 值传递、指针传递、引用传递详解

原文链接:http://www.cnblogs.com/yanlingyin/ 值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值.从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入, 不能传出.当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递. 指针传递: 形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作 引用传递: 形参相当于是实参的“别名”,对形参的操作其实就是对实参的操作,在引用传递过程中,被调函数的形式参数

C++ 值传递、指针传递、引用传递详解

写在前头: 本文摘抄字博客:http://www.cnblogs.com/yanlingyin/archive/2011/12/07/2278961.html 自己的理解: 关于指针和引用的区别在于: 指针是对地址的一份拷贝,虽然对其的使用,可以通过地址来改变实参的值, 但如果对这个指针的拷贝,做出改变,那么这种改变将不影响实参. 而引用,是一种间接的操作,对形参的所有改变,都会通过间接的操作,映射到实参中,引用本身就是一种别名, 所以对这个别名的操作,就是对实参的操作. 还有一些其他的区别,就

C++ Primer 学习笔记_17_从C到C++(3)--引用、const引用、引用传递、引用作为函数返回值、引用与指针区别

欢迎大家阅读参考,如有错误或疑问请留言纠正,谢谢 一.引用 1.引用是给一个变量起别名 变量: 名称 空间 引用: 引用不是变量 引用仅仅是变量的别名 引用没有自己独立的空间 引用要与它所引用的变量共享空间 对引用所做的改变实际上是对它所引用的变量的改变 引用在定义的时候必须要进行初始化 引用一经初始化,不能重新指向其他变量 2.定义引用的一般格式: (1)类型  &引用名 = 变量名: (2)例如: int a=1; int &b=a; // b是a的别名,因此a和b是同一个单元 (3)

C++函数的三种传递方式为:值传递、指针传递和引用传递

值传递: void fun(int x){ x += 5; //修改的只是y在栈中copy x,x只是y的一个副本,在内存中重新开辟的一块临时空间把y的值 送给了x:这样也增加了程序运行的时间,降低了程序的效率. } void main(void){ int y = 0; fun(y); cout<<\"y = \"<<y<<endl; //y = 0; } 指针传递: void fun(int *x){ *x += 5; //修改的是指针x指向的内

C++中值传递、指针传递、引用传递的总结

C++中值传递.指针传递.引用传递的总结 指针传递和引用传递一般适用于:函数内部修改参数并且希望改动影响调用者.对比值传递,指针/引用传递可以将改变由形参"传给"实参(实际上就是直接在实参的内存上修改,不像值传递将实参的值拷贝到另外的内存地址中才修改).指针/引用传递的另外一种用法是:当一个函数实际需要返回多个值,而只能显式返回一个值时,可以将另外需要返回的变量以指针/引用传递给函数,这样在函数内部修改并且返回后,调用者可以拿到被修改过后的变量,也相当于一个隐式的返回值传递吧. 1.