| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 803 人关注过本帖, 2 人收藏
标题:函数传参的一点小体会
取消只看楼主 加入收藏
逐渐学习
Rank: 6Rank: 6
等 级:侠之大者
帖 子:113
专家分:454
注 册:2010-9-26
结帖率:100%
收藏(2)
已结贴  问题点数:20 回复次数:1 
函数传参的一点小体会
程序代码:
#include<stdio.h>

void fun(int in)//传值 复制数值传给in
{
    int u=100;

    in = u;
}

void fun_1(int *x)//传地址改变数值 x为地址(传入参数一般是指针或者是&整形变量)
{
    int b=77;

    *x=b;
}

void fun_2(int &v)//传地址改变数值 v为值(传入参数一般是*指针或者是整形变量)
{
    int c=89;
    v=c;
}

void fun_3(int *z)//传地址数值不变 z为地址(传入参数一般是指针或者是&整形变量)
{
    int b=77;
    int *i;

    i=&b;
    z=i;
}


void change_1(int a,int b)//交换-传值
{
  int t;

  t=a;
  a=b;
  b=t;
}

void change_2(int *a,int *b)//交换-传地址,值交换
{
  int t;

  t=*a;
  *a=*b;
  *b=t;
}

void change_3(int *a,int *b)//交换-传地址,地址交换
{
  int *t;

  t=a;
  a=b;
  b=t;
}

void change_4_error(int *a,int *b)//交换-传地址(程序非法!)
{
  int *t;

  *t=*a;//执行到这里出现非法,t没初始化,*t非法
  *a=*b;
  *b=*t;
}

int main()
{
//*-----------------------------------------------------------------------------
 int y1=9;        //测试变量y1
 int *p1=&y1;    //测试指针p1


 //fun(y1)通过编译,y1没有变化fun(y1)=fun(*p1);fun(p1)没有通过编译.

 //fun_1(&y1)可以,并且y1发生变化.fun_1(p1)=fun_1(&y1);fun_1(y1)没有通过编译

 //fun_2(y1)通过编译,并且y1发生变化fun_2(y1)=fun_2(*p1);fun_2(p1)没有通过编译

 //可以看出*x和&v都是要用地址,不复制数值!
 fun_3(p1);

 printf("y1=%d\n",y1);
//-------------------------------------------------------------------------------*/

/*---------------------------------------------------------------------------------

 //数据交换测试

 int x1=22,x2=88;    //测试变量x1,x2

 int *ip1,*ip2;        //测试指针p1,p2


 ip1=&x1;//ip1指向x1

 ip2=&x2;//ip2指向x2

 //change_1(x1,x2)=change_1(*ip1,*ip2)数值不变

 //change_2(&x1,&x2)=change_2(ip1,ip2)交换数值

 //change_3(&x1,&x2)=change_3(ip1,ip2)数值不变

 //change_4_error(ip1,ip2)错误函数


 printf("x1=%d,x2=%d;*ip1=%d,*ip2=%d\n",x1,x2,*ip1,*ip2);
/---------------------------------------------------------------------------------*/

 return 0;
}
在传参时总是不能很好的对应,自己总结了一下,有些体会。
可以把//挨个去掉,有不足的地方多多指教,多多给力!
搜索更多相关主题的帖子: 函数 
2011-01-19 14:48
逐渐学习
Rank: 6Rank: 6
等 级:侠之大者
帖 子:113
专家分:454
注 册:2010-9-26
收藏
得分:0 
恩,把文件变成.c在编译时,&v通不过的.谢谢各位了。

帮人《---》帮己
2011-01-20 10:03
快速回复:函数传参的一点小体会
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016567 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved