c++将引用或者是指针作为函数参数实现实参的运算_C 语言

C++增加引用类型, 主要是把它作为函数参数,以扩充函数传递数据的功能,较指针参数来得更加安全直观。将引用作为参数传递的时候,实参初始化形参的时候不分配内存空间,也不调用拷贝构造函数,因此更加能够提高运算的性能。所以我们应该尽可能地使用引用,而非指针,但是应该要注意,因为局部变量具有自己短暂的生命周期,因此不能够返回对一个局部变量的引用。

引用通常是在被定义的时候被初始化,但是当它作为参数的时候,则是在被调用的时候被初始化。这时候对引用所做的改变就是对被引用的变量所做的改变。

引用对变量的访问是直接访问,指针则是间接访问,指针有自己独立的地址和内存空间,引用则是变量的别名没有独立的内存空间。

传递变量的指针

复制代码 代码如下:

//形参是指针变量,实参是一个变量的地址,调用函数时,形参(指针变量)指向实参变量单元。
//函数通过使用指针变量作形参的时候,能够实现两个指针变量所指向的值的互换。

#include <iostream>
using namespace std;
int main( )
{   void swap(int *,int *);
    int i=3,j=5;
    swap(&i,&j);                            //实参是变量的地址
    cout<<i<<"  "<<j<<endl;                 //i和j的值已互换
    return 0;
}

void swap(int *p1,int *p2)                 //形参是指针变量
{   int temp;
    temp=*p1;                              //以下3行用来实现i和j的值互换
    *p1=*p2;
    *p2=temp;
}

利用“引用形参”实现两个变量的值互换

复制代码 代码如下:

#include <iostream>
using namespace std;
int main( )
{   void swap(int &,int &);
    int i=3,j=5;
    swap(i,j);
    cout<<"i="<<i<<"  "<<"j="<<j<<endl;
    return 0;
}

void swap(int &a,int &b)      //形参是引用类型,在函数被调用的时候,引用被初始化
{   int temp;
    temp=a;
    a=b;
    b=temp;
}
//输出结果为
// i=5 j=3

时间: 2024-08-01 07:45:32

c++将引用或者是指针作为函数参数实现实参的运算_C 语言的相关文章

c++-C++中以指针作为函数参数修改实参值得问题,求大神解答下!为什么老是提示修改内存地址值冲突

问题描述 C++中以指针作为函数参数修改实参值得问题,求大神解答下!为什么老是提示修改内存地址值冲突 #include using namespace std; void g(char* p) { int i=0; char* a=p; char* b="dcba"; for(i=0;i<4;i++) { *a=*b; a++; b++; } } void main() { char* x="abcd"; char* p=x; g(p); cout<&l

关于数组做函数参数的问题集合汇总_C 语言

首先是数组元素作为函数的实参,这和直接用多个变量作为函数的实参在用法上没有什么差别. 作为例子的代码: 复制代码 代码如下: #include<iostream>using namespace std;int main(){ int max(int a,int b);        int a[2],m;        a[0]=1;        a[1]=2; m=max(a[0],a[1]); cout<<m;   return 0;  }int max(int a,int

关于C++引用做为函数参数和指针作为函数参数

关于C++引用做为函数参数和指针作为函数参数 个人感觉引用和指针有着很多相识的地方 参考http://blog.itpub.net/7728585/viewspace-2113049/ 我们这里编写两段函数如下: 1.   AT_NAME & at_r (AT_NAME & cp,const AT_NAME & in_s)   {       cp = in_s;       return cp;   } 2.    AT_NAME* at_p (AT_NAME *cp , con

将指向结构体对象的指针作为函数参数,调用p-&amp;amp;gt;时调试报错

问题描述 将指向结构体对象的指针作为函数参数,调用p->时调试报错 void deleteelement(linearlist *list, int power) { linearlist *p = list; while (p->power != power && p->next != NULL) //调试时显示错误在这一行 { p = p->next; } if (p->power == power) { linearlist *dele = p; p =

我想用指针作为函数形参,实参为数组 实现数组元素反序存放。可是只能交换前五个

问题描述 我想用指针作为函数形参,实参为数组 实现数组元素反序存放.可是只能交换前五个 #include using namespace std; void invert(int A,int); int main() { int A[10],n; cout<<"Please input 10 number:"< for(n=0;n cin>>A[n]; invert(A,10); return 0; } void invert(int *A,int n)

结构体类型指针做函数参数(C++)

因为用到了这块,所以转了一篇文章. 原文地址http://blog.sina.com.cn/s/blog_5f777ddd0100chbl.html 设有学生情况登记表如图所示,用选择排序法对该表按从小到大进行排序. 学生情况登记表 学号num 姓名name[8] 性别sex 年龄age 成绩score 101 zhang m 19 95.6 102 zhao m 20 89.0 103 wang f 18 96.5 104 shan m 20 94.0 105 chen f 20 76.5 1

剖析C++编程当中指针作为函数参数的用法_C 语言

在C语言中,函数指针变量常见的用途之一是作为函数的参数,将函数名传给其他函数的形参.这样就可以在调用一个函数的过程中根据给定的不同实参调用不同的函数. 例如,利用这种方法可以编写一个求定积分的通用函数,用它分别求5个函数的定积分: 可以看出,每次需要求定积分的函数是不一样的.可以编写一个求定积分的通用函数integral,它有3个形参: 下限a.上限b,以及指向函数的指针变量fun.函数原型可写为: double integral (double a, double b, double (*fu

C语言中sizeof()与strlen()函数的使用入门及对比_C 语言

sizeof()函数1,是什么?     sizeof其实就是一个运算符,和那些+,-一样的东西,在程序编译的时候进行解析转换.虽然我们经常见到sizeof后面跟着个小括号,长得和函数差不多,但它和函数完全是两码事. 2,有什么用?     sizeof其实就是用于告诉我们编译器在为某一特定数据或者某种数据类型的数据在存储空间中开辟空间时,开辟的空间大小,以字节为单位. 3,怎么用?     sizeof(类型),或者sizeof(变量)都可以,得到的就是类型或者变量的存储空间.当对变量用的时候

C/C++杂记 虚函数的实现的基本原理(图文)_C 语言

1. 概述 简单地说,每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少有一个与之对应的虚函数表,其中存放着该类所有的虚函数对应的函数指针.例: 其中: B的虚函数表中存放着B::foo和B::bar两个函数指针. D的虚函数表中存放的既有继承自B的虚函数B::foo,又有重写(override)了基类虚函数B::bar的D::bar,还有新增的虚函数D::quz. 提示:为了描述方便,本文在探讨对象内存布局时,将忽略内存对齐对布局的影响. 2. 虚函数表构造过程 从编译器的角度来说,