引用&指针交换函数实践】的更多相关文章

实践如下: #include <iostream> using namespace std; // 普通交换,注意这里的ab值,在具体调用时是基本数据的拷贝,原始数据不会变化 // 因此这里交换后的值是不会变化的 void swap(int a, int b){ int tmp = a; a = b; b = tmp; } // 引用交换, 参数和原始数据指向同一个地方,也可以理解为一种指针 void refSwap(int &a, int &b){ // 需要定义tmp存放临…
一 函数的参数传递可以简单分类为“传值”和“传引用”. 声明函数时,形参带引用“&”,则函数调用时,是把实参所在的内存直接传给函数所开辟的栈内存.在函数内对形参的修改相当于对实参也进行修改. 声明函数时,形参不带引用,则函数调用时,是把实参拷贝一份作为形参.从内存上看,存在两个存放相同变量的区域,分别是实参和形参.在函数中对形参的修改,都不会对实参产生影响.函数退出后,形参所在的栈内存全部销毁. 二 对智能指针shared_ptr的通俗理解. shared_ptr之所以能够做到在指针生命周期结束…
◆ 引用调用与指针传值调用C++中函数的参数的基本使用方法是传值.为了弥补单纯传值的不足,以引用作为函数的参数,从逻辑上讲引用是别名,在函数中对参数的操作,就是对实参的操作,而在物理上是传实参的地址. 将指针用作函数的参数时,传的仍然是值,指针的值,这个值就是指针所指向的变量或对象的内存首地址,在物理上传的是指针的值,在逻辑上讲是把另一个变量的地址传过去了,可以看作传地址. 建议在函数参数传递中,能用“引用”时绝不用“指针”. [例5.9]用指针代替引用实现两数据的交换. #include "s…
原文:深入理解C指针之三:指针和函数 理解函数和指针的结合使用,需要理解程序栈.大部分现代的块结构语言,比如C,都用到了程序栈来支持函数的运行.调用函数时,会创建函数的栈帧并将其推到程序栈上.函数返回时,其栈帧从程序栈上弹出. 在使用函数时,有两种情况指针很有用.一种是将指针作为参数传递给函数,函数可以修改指针所引用的数据,可以高效的传递大块数据.另一种是声明函数指针. 程序的栈和堆 程序的栈和堆是C程序的重要运行时元素.程序栈是支持函数执行的内存区域,通常和堆共享一块内存区域.通常程序栈在区域…
一直搞不明白,c++中指针到底是个啥东西,今天遇到到c++,指向指针的指针的问题,突然有点开窍了. 举个例子: int main(int argc, char** argv){ int a[5]={1,2,3,4,5}; int *p=a; int **pointer=&p; std::cout<<"a="<<a<<std::endl; std::cout<<"p="<<p<<std::…
应注意问题: 当指针作为函数的参数进行传递的时候,本质上还是进行的"值传递",也就是复制了一个新的指向该地址的指针变量. 只有在被调函数中,对指针进行引用操作,才可以达到不需要返回值,就对指针指向的变量做出相应的变化. 下面分析这样两个例子; 要求:定义并初始化两个字符串变量,并执行输出操作:然后调用函数使这两个变量的值交换,并且要求被调函数的传值通过传递指针来实现. 程序1.1 #include<iostream> #include<string> using…
一.内联函数     常规函数和内联函数的区别在于C++编译器如何将他们组合到程序中.编译过程的最终产品是可执行程序--由一组机器语言指令组成.运行程序时,操作系统将这些指令载入到计算机内存中,因此每条指令都有特定的内存地址.执行到函数调用指令时,程序将在函数调用后立即存储该指令的内存地址,并将函数参数复制到堆栈,跳到标记函数起点的内存单元,执行函数代码,然后跳回到地址被保存的指令处.来回跳跃并记录跳跃位置意味着以前使用函数时,需要一定的开销.     有了内联函数,编译器使用相应的函数代码替换…
首先学习: 指向非对象(一般的)函数/过程的函数指针 Pascal 中的过程类型与C语言中的函数指针相似,为了统一说法,以下称函数指针.函数指针的声明只需要参数列表:如果是函数,再加个返回值.例如声明一个过程类型,该类型带一个通过引用传递的整型参数: type   IntProc = procedure (var Num: Integer); 这个过程类型与任何参数完全相同的例程兼容,即用它声明的变量,可以指向任何此类函数,并通过其进行函数的调用.下面是一个兼容例程: procedure Dou…
往往,我们一提到指针函数和函数指针的时候,就有很多人弄不懂.下面详细为大家介绍C语言中指针函数和函数指针. 1.指针函数 当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需要指针或地址的表达式中. 格式: 类型说明符 * 函数名(参数) 由于返回的是一个地址,所以类型说明符一般都是int. 在C语言中,函数也是一种类型,可以定义指向函数的指针.我们知道,指针变量的内存单元存放一个地址值,而函数指针存放的就是函数的入口地址(位于.text段).下面看一个简单的例子: #…
第十二章 Perl5中的引用/指针 by flamephoenix 一.引用简介二.使用引用三.使用反斜线(\)操作符四.引用和数组五.多维数组六.子程序的引用  子程序模板七.数组与子程序八.文件句柄的引用 一.引用简介    引用就是指针,可以指向变量.数组.哈希表(也叫关联数组)甚至子程序.Pascal或C程序员应该对引用(即指针)的概念很熟悉,引用就是某值的地址,对其的使用则取决于程序员和语言的规定.在Perl中,可以把引用称为指针,二者是通用的,无差别的.引用在创建复杂数据方面十分有用…