函数的参数
来源:互联网 发布:淘宝宝贝描述怎么提高 编辑:程序博客网 时间:2024/05/18 19:45
参数的传递
一元运算符可发取得变量的存储地址。设pool 是一个变量的名字,那么&pool 就是变量的地址。一个变量的地址可发看作是该变量的在内存中的地址。例:
以下的语句:
Pool=24;
并且假定pool的存储地址为0B78;那么语句:
Printf(“%d%p\n”,pool,&pool);
将输出以下数值:(%p是输出地址的说明符)
24 0B78
如例:
#include<stdio.h>#include<stdlib.h>void interchange(int u,int v);int main(void){int x=5,y=10;printf("Originally x =%d and y=%d\n",x,y);interchange(x,y);printf("nows x =%d and y=%d\n",x,y);system("pause");return 0;}void interchange(int u,int v){int temp;temp=u;u=v;v=temp;}
基输出结果:
可知,其输出结果并没有交换。
若输出结果即printf();两个函数的子函数中显示,那么其值就会交换。即:
interchange()改为:
void interchange(int u,int v){int temp;printf("Originally u =%d and v=%d\n",u,v);temp=u;u=v;v=temp;printf("nows u =%d and v=%d\n",u,v);}
结果:
可知函数interchange()并没有错误,u 和v 的值确实得到了交换。问题出现在把执行结果传递给函数main()的时候。Interchange()使用的就是独立于函数main();因此交换u 和v 的数值对x 和 y 没有任何影响。
应该怎样解决?指针。
指针是其数值为为地址的变量。
用指针解决函数间的通信问题:
#include<stdio.h>#include<stdlib.h>void interchange(int *u,int *v);int main(void){int x=5,y=10;printf("Originally x =%d and y=%d\n",x,y);interchange(&x,&y);printf("nows x =%d and y=%d\n",x,y);system("pause");return 0;}void interchange(int *u,int *v){int temp;temp=*u;*u=*v;*v=temp;}
结果:
函数调用语句如下:
Interchange(&x,&y);
函数传递的是地址而不是它们的值。意味着interchange()函数原型声明和定义中的形式参数u 和 v 将使用地址作为它们的值。因此,应该声明为指针。由于x 和 y 都是整数,所以u和v 是指向整数的指针。其声明如下:
Void interchange(int * u,int *v);
接下来,函数体进行如下声明:
Int temp;
从而提供所需的临时变量。
在ANSI原型中可以省略变量名称。这样,函数原型可以进行如下声明:
Void interchange(int*,int*);
Function1(x);//这时是传递x的值。
Function2(&x);//这时是传递x 的地址。
第一种调用形式要求函数定义部分必须包含一个和x 具有相同数据类型的形式参数。
Function1(int num);
第二种调用形式要求函数定义部分必须是指向相应数据类型的指针:
Function2(int *ptr);
要使用函数进行数据操时,可以使用第一种形式,但是,如果需要改变调用函数中的多个变量的值时,就需要用到第二种形式。
总之,interchange()只是使用局部变量,但是通过指针,该函数可以操作main()中的变量值。
- python函数 - 函数的参数
- main函数的参数
- main函数的参数
- Main 函数的参数
- main()函数的参数
- main函数的参数
- main函数的参数
- main函数的参数
- main函数的参数
- 函数的参数传递
- 函数的参数传递
- 函数参数的类型
- main函数的参数
- main函数的参数
- main函数的参数
- main函数的参数
- main函数的参数
- main函数的参数
- 算法导论 4-2
- Web架构“圣经”-------HTTP权威指南--7
- Linux/unix 指令——ps -ef
- php 获取url中文件扩展名
- php以不同名字下载同一个文件(x-sendfile)
- 函数的参数
- UVA - 10192 Vacation
- MatLab矩阵运算——图像灰度化
- JSTL解析——005——core标签库04
- 玩转shell之符号篇
- oracle 获取最近的整点、半点时间
- printf如何输出64位整数
- windows 程序设计 多文档
- python 单例