基础系列(关于实参,形参,以及指针)
来源:互联网 发布:淘宝网金音萨克斯 编辑:程序博客网 时间:2024/05/22 06:22
这里讲讲《彻底搞定C指针》里面一个经典的例子。引出实参,形参和指针。
形参:全称为"形式参数"是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传如的参数.
实参:全称为"实际参数"是在调用时传递个该函数的参数.
void Exchg1(int x, int y)
{
int tmp;
tmp=x;
x=y;
y=tmp;
printf("Exchg1:x=%d,y=%d/n",x,y);
}
void Exchg2(int &x, int &y)
{
int tmp;
tmp=x;
x=y;
y=tmp;
printf("Exchg2:x=%d,y=%d/n",x,y);
}
void Exchg3(int *x, int *y)
{
int tmp;
tmp=*x;
*x=*y;
*y=tmp;
printf("Exchg3:x=%d,y=%d/n",*x,*y);
}
void main()
{
int a=4,b=6;
Exchg1 (a,b) ;
printf("a=%d,b=%d/n",a,b);
Exchg2 (a,b);
printf("a=%d,b=%d/n",a,b);
Exchg3(&a,&b) ;
printf("a=%d,b=%d/n",a,b);
}
这里Exchg1函数被调用的时候,并没有成功交换a跟b的数据。为何呢。
int a=4,b=6;
Exchg1 (a,b) ; //这里本质上发生的是:Exchg1 (intx=a,inty=b) ; x跟y是函数定义里面的形参,也就是说这里只是把实参a跟b的值赋予了x,y这2个形参变量。接下来,函数里发生的值互换只换掉了x跟y的值,而实参a跟b没有影响。明白了不。
再看Exchg2 (a,b); //再看本质Exchg2 (int &x=a,int &y=b); 这里x跟y都是a,b的引用,操作x跟y交换就等于a跟b交换,自然,调用Exchg2 可以成功交换a跟b
Exchg3(&a,&b) ; //Exchg3(int *x=&a,int *y=&b); x跟y2个形参是a跟b的指针,也就是实参数据存放的地址。然后函数里交换了x跟y指向的数据,也就是实参a跟b,所以,调用也是成功的。
- 基础系列(关于实参,形参,以及指针)
- 基础系列(关于实参,形参,以及指针)
- 形参,实参,按值,按引用,按指针
- [Go 语言] 指针,地址,形参,实参
- 关于形参实参(python)
- 基础7---关于指针
- C++语法基础--模板实参推断,模板类型形参的实参的受限转换,模板实参推断与函数指针
- !!!Formal Parameter & Actual Parameter & Pointer (形参, 实参, 指针)
- 函数_调用指针交换函数(形参与实参)
- 实参 形参
- 形参,实参
- 形参、实参;
- 指针学习系列(一):关于指针
- 形参、实参以及值调用和引用调用的区别
- 关于默认实参
- 关于C的指针,Java/Python的引用,形参与实参个人理解
- 结构体指针作实参
- 玩转数组/指针实参
- 网络管理在新形势下的布局
- linux-rs_io.s
- 领悟了核高基的目的,为了国家信息主权,呼吁大家停用MSN,支持国产IM
- 《精通Javascript+jQuery》视频教程目录
- C/C++板块常见问题集:(写给新手),欢迎大家补充
- 基础系列(关于实参,形参,以及指针)
- 堆和栈的区别(转过无数次的文章)
- 关于指针的问题,有兴趣可以来看2分钟
- 迈向系统架构师
- 认清SOA的本来面目
- const用法详解 (转)
- Hashtable 类
- C# javascript 读写Cookie
- 类的大小——sizeof 的研究