C语言--函数篇

时间:2024-03-11 10:45:43
 

 

1-1.函数简单调用

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<windows.h>
 4 int Move();
 5 int Bulid();
 6 int Paint();
 7 int main ()
 8 {
 9     Move();
10     Bulid();
11     Paint();
12     
13     return 0;
14 }
15 int Move()
16 {
17     printf("调用搬运函数\n"); 
18 }
19 int Bulid()
20 {
21     printf("调用构建函数\n");
22 }
23 int Paint()
24 {
25     printf("调用粉刷函数\n");
26 }

 一个简单的加法函数功能的实现和调用

 1 #include<stdio.h>
 2 int add(int Number1,int Number2); //声明add函数  功能是用来计算加法 
 3 int main ()
 4 {
 5     int a,b,sum;
 6     scanf("%d %d",&a,&b);
 7     sum=add(a,b);//将a和b的值作为函数的实参
 8     printf("%d",sum);
 9     return 0;
10 }
11 
12 int add(int Number1,int Number2) //函数的定义
13 {
14     int result;
15     result=Number1+Number2;
16     return result; //将计算的结果作为函数的返回值 
17  } 

 

 1 #include<stdio.h>
 2 char ShowChar();
 3 int main ()
 4 {
 5     char cResult;
 6     cResult=ShowChar();
 7     printf("%c\n",cResult);
 8     return 0;
 9 }
10 char ShowChar()
11 {
12     int iNumber;
13     printf("Please input a number \n");
14     scanf("%d",&iNumber);
15     return iNumber;
16 }
17 /*
18 程序功能:通过ShowChar函数 得到一个数字 并对照ASCII码 转换为对应的字符 返回到Main函数中的 cResult中 然后打印出来
19 需要注意的是:函数的返回值的类型就是你定义这个函数的类型 
20 */

函数的实参和形参是一种很简单的东西 形参就是任何值的实参 很简单的东西 书里面竟然用了 牛奶xx一大堆废话来讲这个 还是郝斌老师说的对 拿现实中的事情 硬套在程序中 这样是没卵用的

 

  

 

 

1-2数组-指针作为函数的参数

注意:当数组作为函数的实参时,只传递数组的地址,而不是将整个数组赋值到函数中,当用数组名作为实参调用函数时,指向该数组的第一个元素的指针就被传递到了函数中

C语言中没有下标的数组而是一个指向该数组第一个元素的指针 其实说的就是数组第一个元素的地址

如 int count [10];        count 就等同于 *count 都表示count数组 第一个元素的地址

 

(1)数组的元素作为函数的参数 (需要用for循环来对数组中的元素进行遍历 让每一个元素都传入函数中)

 show函数用来输出传入的参数

fuuzhi函数用来对传入的参数进行赋值

 1 #include<stdio.h>
 2 void show (int number[]);
 3 void  fuzhi (int number2[]);
 4 int main ()
 5 {
 6     int a[10];
 7     fuzhi(a);
 8     show(a);
 9     
10     return 0;
11 }
12 
13 
14 void  show (int number[])
15 {
16     int i ;
17     for(i=0;i<10;i++)
18     {
19         printf(" number[%d]=%d\n",i,number[i]);
20     }
21 }
22 
23 
24 
25 void  fuzhi(int number2[])
26 {
27     int i;
28     for(i=0;i<10;i++)
29     {
30         number2[i]=i;
31     }
32 }

(2)将指针作为数组的参数

 1 #include<stdio.h>
 2 void evaluate(int * pPoint);
 3 void display (int * pPoint);
 4 int main()
 5 {
 6     int iArray[10];
 7     evaluate(iArray);
 8     display(iArray);
 9     return 0;
10 }
11 void display(int * pPoint)
12 {
13     int i;
14     for(i=0;i<10;i++)
15     {
16         printf("The Nmumber is %d\n",pPoint[i]);
17     }
18 }
19 void evaluate(int * pPoint)
20 {
21     int i;
22     for(i=0;i<10;i++)
23     {
24         pPoint[i]=i;
25     
26     }
27 }

 2-1.Main函数的形参的简单了解

 1 Main函数的形参
 2  1 #include<stdio.h>
 3  2 /*
 4  3 argc 保存程序传入参数的个数 这个函数的值最小是1 1代表程序本身、
 5  4 字符型数组指针argv[] 数组中每一个元素都指向 命令行实参 
 6  5 */
 7  6 int main (int argc,char *argv[])
 8  7 {
 9  8     printf("%s",argv[0]); //argv[0]指向1 1代表程序本身 打印程序所在位置 
10  9     return 0;
11 10 }

 运行结果:

3.函数调用的几种方式

1)简单的函数语句调用

比如movie();

执行函数中的语句

 

2)函数表达式的调用

函数出现在一个表达式 要求函数返回一个值

比如add()函数用来计算加法的

result=add(4,5)

返回的值就是9 9赋给result

 

3)函数参数的调用

顾名思义将函数作为函数的参数

比如还是add函数

result=add(add(3,4),9)

add函数里面又嵌入一个函数 最终result的值=16 add(3,4)其实就是一个值 这个值就是add函数返回的值

 

4)函数的嵌套调用

函数在C语言中是相互平行的 不允许在另一个函数中定义另一个函数 但是函数之间可以相互的调用 是调用函数的功能 并不是在函数a内定义函数b c语言不允许函数的嵌套定义

 比如在a函数中调用b函数

 

3-1外部函数和内部函数

1)内部函数

定义一个函数 如果只希望它只能被所在的源文件调用就称这样的函数叫做 内部函数 内部函数也被叫做静态函数 使用内部函数 可以让函数只局限在所在的源文件中 如果一个程序的不同源文件文件中有同名的静态函数 这些函数是不会相互干扰的

语法:static 返回值类型 函数名(参数列表)

 将外部函数中所演示的程序例子 show.cpp 文件中Show函数 用static修饰成静态类型 看运行结果 报错 说明内部函数 不能被外部源文件所引用

2)外部函数


定义一个函数 希望让这个函数可以在外部源文件中调用 这样的函数就称作外部函数 定义外部函数的时候使用extern关键字进行修饰

语法:extern 返回值类型 函数名 (参数列表)

代码练习:

 1 //test.cpp 源文件内容 
 2 #include<stdio.h>
 3 #include"show.cpp"
 4 int main ()
 5 {
 6     char ch[10];
 7     gets(ch);
 8     Show(ch);
 9     return 0;
10  } 

 

1 //show.cpp 源文件内容
2 void Show(char *ch)
3 {
4     printf("%s",ch);
5  } 

在show.cpp源文件中定义了一个外部函数Show 用来打印传入的参数 省略了关键字extern 然后在test.cpp中调用Show函数 将字符串数组ch作为函数的实参 传入Show函数中 

输出结果:

 

注意:在c语言中如果不指明函数的作用范围 则函数的默认为外部函数 也就是说定义外部函数的时候 可以省略extern关键字

 

补充一点比较简单的:局部变量和全局变量

在for if while 之类的复合语句中定义的变量 只能在定义该变量复合语句内使用  在函数内定义的变量 也只能在该函数内使用 定义全局变量的话 可以定义在main函数外

如果要定义变量的源文件外使用的话 需要将该变量用extern关键字来修饰