函数参数传递的问题
来源:互联网 发布:mysql 修改字段默认值 编辑:程序博客网 时间:2024/05/21 20:26
函数参数传递的问题只需记信一点:传递的永远是参数的副本
例1:
void change(int a,int b){ int temp = a; a = b; b = temp;}int main(){ int a=10,b=20; printf("a=%d,b=%d\n",a,b); change(a,b); printf("a=%d,b=%d\n",a,b); return 0;}
change函数中传入的是a,b的副本a',b',改变的是a',b',而a和b并没有改变
--------------------------------------------------------------------------------------------------
例2:
void change(int* a,int *b){ int *temp; temp = a; a = b; b = temp;}int main(){ int a=10,b=20; printf("a=%d,b=%d\n",a,b); change(&a,&b); printf("a=%d,b=%d\n",a,b); return 0;}
change函数中传入的是指针a和指针b的副本,函数改变是指针a和指针b的副本,指针a和指针b是没有变的
------------------------------------------------------------------------------------------------
例3:
void change(int* a,int *b){ int temp; temp = *a; *a = *b; *b = temp;}int main(){ int a=10,b=20; printf("a=%d,b=%d\n",a,b); change(&a,&b); printf("a=%d,b=%d\n",a,b); return 0;}
例3中虽然change函数中传入的也是指针a和指针b的副本,但是在函数中通过指针副本改变了其所指向数据的值。
--------------------------------------------------------------------------------------------------
例4:
struct Node{int x;int y;};void change(Node* a,Node* b){a->x = 100;a->y = 100;b = a;}int main(){Node a,b;a.x = 10;a.y = 10;b.x = 0;b.y = 0;printf("a.x=%d,a.y=%d\n",a.x,a.y);printf("b.x=%d,b.y=%d\n",b.x,b.y);change(&a,&b);printf("a.x=%d,a.y=%d\n",a.x,a.y);printf("b.x=%d,b.y=%d\n",b.x,b.y);}
例4中change函数传入的是结构体指针a和结构体指针b后副本,但是change函数中通过对结构体指针a的副本所指向的内容做了修改,即实际的数据被修改了。而对于结构本b,在change函数的发生的是结构体指针a的副本赋值给了结构体指针b的副本,实际上结构体指针b并没有发生改变,因此最后结构体b的输出没有发生变化。
- 函数参数的传递问题
- 函数参数传递的问题
- 函数参数传递问题
- Delphi里函数参数传递的问题
- java 函数参数的传递问题。
- 函数指针参数的传递问题
- 关于函数中参数传递的问题
- AfxBeginThread函数参数传递的问题
- javascript函数参数的传递问题
- AfxBeginThread函数参数传递的问题
- 函数指针参数的传递问题
- python 函数参数传递的问题
- 关于js函数的参数传递问题
- 指针作为函数参数传递的问题
- jquery each函数参数传递的问题
- 函数的参数传递
- 函数的参数传递
- 函数参数的传递
- linux下分辨率设置文件
- Ubuntu目录介绍
- rqnoj-12
- ubuntu下minicom的安装及使用
- ZOJ 3689 Digging(C语言版)
- 函数参数传递的问题
- 【OpenCV】访问Mat图像中每个像素的值
- bug出现的原因和表现
- Formatting String Objects
- 2013年4月9日(7——5表面动态和页面切换)
- 【OpenCV】图像滤波 Image Filtering
- NSTimer、 NSTask、 NSThread 和 NSRunloop 之间的区别:
- Socket向服务端发送消息工具类
- 在mac上配置cocos2d-x开发环境