参数传递和作用域.pptVIP

  • 2
  • 0
  • 约1.53千字
  • 约 8页
  • 2017-06-02 发布于湖北
  • 举报
参数传递和作用域

* 参数传递一般有三种形式: 传值调用: 特点:形参的改变不影响实参     函数多为有返回值的形式。    参数:形参为变量,实参可以是与形参同类型的变量、常    量或表达式 传址调用: 特点:形参所指内容的改变会影响实参地址所指向的内    容,但形参地址的改变对实参没有影响。    参数:形参为指针变量或数组,实参可以是与形参同类型    的指针变量、变量的地址或数组名。 引用调用: 特点:形参的改变直接影响实参的内容。 参数:形参为引用,实参为与形参同类型的变量. 函数f有两个参数,分别为整型变量a和b的相应形式,则在以下不同的传递形式下,形参和实参的对应关系如下: 传值调用: 定义形式: int f ( ) 调用形式: x=f(a, b) ;//x是已定义的整型变量,存放函  数调用的结果。 传址调用: 定义形式: void f( ) 调用形式: ; 引用调用: 定义形式: void f( ) 调用形式: f( ) ; int a, int b f(a, b) int a, int b a, b int *a, int *b 数组名做参数是传址调用,形参数组和实参数组是同一个数组,故形参数组内容的改变就等于改变了实参数组. 假设有定义int a[10];则该数组做参数的对应实参、形参形式如下:(数值型数组的用法) 定义形式: void f( )//数组长度作为第二个参数 调用形式: 假设有定义char s[100];则该数组做参数的对应实参、形参形式如下:(字符型数组的用法) int a[ ],int n f(a, 10) 定义形式:void f( )//数组长度不必指定 调用形式: char s[ ] f(s) #include iostream.h void fun(int a,int *b,int *c,int d ) { int k=100; a=a*2; *b=*b*2; c=k; *c=*c*2; d=d*2; } void main() {int w=1,x=1,y=1,z=1; fun(w,x,y,z); coutw=w\nx=x\ny=y\nz=zendl; } 关于变量的作用域和存储类别: 1、 静态变量和全局变量若没有初始化,则其初值为0, 而自动变量若没初始化,则其初值不确定。 2、 静态变量只在第一次调用函数的时候初始化一次,而 动态变量每调用一次函数,便初始化一次。 3、 当全局变量和局部变量同名时,局部变量起作用 4、 全局变量一旦改变,后续操作使用的都是改变了的值 静态变量只初始化一次,而动态变量每调用一次函数,便初始化一次。 void test() {int i=0; static int j=0; i++;j++; coutijendl; } void main() {int i; test(); test(); } i=1,j=1 i=1,j=2 *

文档评论(0)

1亿VIP精品文档

相关文档