基础系列(关于实参,形参,以及指针)

 这里讲讲《彻底搞定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,int y=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,所以,调用也是成功的。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值