7.3参考传递void swap(int a.int b)void mainO.swap(x.y)change(a)void change(int x[10])
7.3 参考传递
【例7-2】演示函数的参数传递#include<stdio.h>void main()void swap(int a,int b)int x=10,y=20;int t;int a[10] = {1,2,3,4,5,6,7,8,9,10];t=a; a=b; b=t;inti,s=O;swap(x,y);/*值传递*/printf("a,b=%d(swap)n",a,b);printf("x,y=%d(main)/n",x,y)for(i = 0 ; i< 10 ; i++)void change(int x[10])s = s + a[i];(printf("s=%din",s);int i;s=;change(a);/*地址传递*/for(i=0 ; i<10 ; i++)for(i = 0 ; i< 10; i++) s = s + a[i];x[] = x[i]+ 1;printf("s=%din",s);OXND:ICle7_2/Debugle72.exe兰ab=20(swap)x.y=10(main)$=55=65A
【例7-2】演示函数的参数传递 void main() { int x=10,y=20; int a[10] = {1,2,3,4,5,6,7,8,9,10}; int i,s = 0; swap(x,y); /*值传递*/ printf("x,y=%d(main)\n",x,y); for(i = 0 ; i < 10 ; i++) s = s + a[i]; printf("s=%d\n",s); s=0; change(a); /*地址传递*/ for(i = 0 ; i < 10 ; i++) s = s + a[i]; printf("s=%d\n",s); } #include <stdio.h> void swap(int a,int b) { int t; t=a; a=b; b=t; printf("a,b=%d(swap)\n",a,b); } void change(int x[10]) { int i; for(i=0 ; i<10 ; i++) x[i] = x[i]+ 1; }
7.4函数声明函数的声明是对函数类型、名称等的说明。对函数及其函数体的建立称为函数的定义。对函数的说明可以和定义一起完成,也可以只对函数的原型进行声明,这种声明通常称为引用性声明,其格式如下:<类型><函数名>(<形参表>);Q如:int sum(int a,int b):福和完整的函数声明不同的是,形参表可以只给出形参的类O型,如:int sum(int.int ):1形参名可以省略另外,这种声明是一条语句,后面的分号()必不可少
7.4 函数声明 函数的声明是对函数类型、名称等的说明。对函数及其函数 体的建立称为函数的定义。对函数的说明可以和定义一起完 成,也可以只对函数的原型进行声明,这种声明通常称为引 用性声明,其格式如下: <类型> <函数名> (<形参表>); 如: int sum(int a,int b); 和完整的函数声明不同的是,形参表可以只给出形参的类 型,如: int sum(int,int ); 形参名可以省略。 另外,这种声明是一条语句,后面的分号(;)必不可 少
声明和定义的区分变量的声明通常是对变量的类型和名称的一种说明,不一定会分配内存,而变量的定义肯定会分配内存空间。函数的声明是对函数的类型和名称的一种说明,而函数的定义是一个模块,包括函数体部分。,声明可能也是定义,也可能不是。广义上的声明包括定义性声明和引用性声明,我们通常所说的声明指的是后者
声明和定义的区分 变量的声明通常是对变量的类型和名称的一种说明,不一定 会分配内存,而变量的定义肯定会分配内存空间。 函数的声明是对函数的类型和名称的一种说明,而函数的定 义是一个模块,包括函数体部分。 声明可能也是定义,也可能不是。广义上的声明包括定义性 声明和引用性声明,我们通常所说的声明指的是后者
7.5作用域,作用域就是作用范围,不同作用域允许相同的标识符出现,同一作用域标识符不能重复,嵌套的作用域标识符由内向外屏蔽。大圆Ainta;chare;intsum(intn);小圆℃小圆Binta;inta;chard;charb:小圆D
7.5 作用域 作用域就是作用范围,不同作用域允许相同的标 识符出现,同一作用域标识符不能重复,嵌套的 作用域标识符由内向外屏蔽