七、函 数

本文深入讲解了C语言中函数的概念、定义与使用方法,包括函数的传值与传址调用,以及不同储存类别的作用范围。通过示例程序帮助读者理解函数如何简化程序结构并提高代码复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

l        l        ?

1.      1.      C语言使用的函数可以写出非常漂亮的程序结构,使程序简单化,侦错容易。

2.      2.      将重复之某些指令撰写成一个函数,可减少编辑程序时间,更可使程序精简,清晰了解。

3.      3.      C语言使用的函数其呼叫方法与数学上使用函数完全相同,

:

a = function ( x , y ) ;

 

表示将变量 x , y 输入函数 function , 其传回函数值设定给变量 a

 

l        l        (格式)

1.     1.        (Function Definition)

2.     2.        (Function Call)

3.     3.        (Function Prototype)

 

l          l          (格式)


 
        
 
         
储存类别 资料型别 函数名称 (形式自变量的串行)
         
 
        
  {
         
       形式自变量的宣告 ;
        
 
        
       函数的本体(执行叙述)
         
   }
         

Example:

 

void Line (void)

 

{

int j;

 

for (j=1;j<20;j++)

printf(“%d/n”,j);

 

}

l        l         函

 

 

储存类别

功能叙述

static

只能在进行宣告的编译单位内可以执行

extern

在进行宣告的编译单位以外也可执行

 

 

 

 

 
    
ps.              ,     "extern"   



 
   
 
  
 
  
 
  
Example1: file1.c
         
 
        
         extern func1( )
         
       {
         
             .
         
             .
         
       }
         
         static func2( )
         
       {
         
             .
         
       } 
         
Example2: file2.c
         
 
        
         extern func1( );
         
 
        
         static func3( )
         
       {
         
             .
         
             .
         
          func1( );
         
.
         
       }
         
 
  

l        l       


(函数值) , return , :

return ( 变量或式子 ) ;

 

(函数值)

 

 

 

return()叙述之目的如下        

 

1.                             1.                             将控制权传回给呼叫程序
    
2.                             2.                             return()叙述后括号内之数值传给呼叫程序之方式
    

l        l       

( 1 ) ( Call by value )

( 2 ) ( Call by reference )

 

       Example 1: 传值呼叫 
         
 
        
#include < stdio.h > 
        
        
        
    int func(a,b,c)
        
    int a,b,c;
        
       {
        
         int d;
        
         d=a+b+c;
        
         return(d);
        
       }
        
 
       
void main(void)
         
    {
        
          int x,y,z,p;
        
          x=y=z=3;
        
          p=func(x,y,z);
        
          printf("p-->%d/n",p);
        
    }
        
 
       
   result :  p-->9 
         
     Example 2: 传址呼叫 
         
 
       
#include < stdio.h >
        
 
       
void func(a,b,c,d)
        
int *a,*b,*c,*d;
        
{
        
  *d=*a+*b+*c;
        
}
        
 
       
void main(void)
        
{
        
  int x,y,z,p;
        
 
        
x=y=z=3; 
        
func(&x,&y,&z,&p);
        
  printf("p-->%d/n",p);
        
 }
        
         
        
 
       
 
       
   result :    p-->9
        
 
   
/* ================================================== */
        
/*    程序实例:傅值和传址的副过程调用(交换XY)        */
        
/* ================================================== */
        
 
       
/* --------------------交换两值(传值副程序)-------------------- */
        
void swap1(int x,int y)
        
{  int temp;
        
 
       
   temp = x;
        
   x = y;
        
   y = temp;
        
}
        
 
       
/* -------------------   交换两值(传址副程序) ----------------- */
        
void swap2(int *x,int *y)
        
{  int temp;
        
 
       
   temp = *x;
        
   *x = *y;
        
   *y = temp;
        
}
        
 
       
/* ---------------------主程序---------------------- */
        
void main()
        
{
        
   int x = 10, y=0;                    /* 局部变量宣告 */
        
 
       
   printf("               X    Y   /n");
        
   printf("  初值         %d   %d   /n",x,y);
        
   swap1(x,y);                        /* 传值副过程调用(交换XY) */
        
   printf("  传值         %d   %d   /n",x,y);
        
 
       
   swap2(&x,&y);                  /* 传址副过程调用(交换XY) */
        
   printf("  传址         %d   %d   /n",x,y);
        
}
        
 
        
Result
            
X
            
Y
            
初值
           
10
            
0
            
传值
           
10
            
0
            
传址
           
0
            
10
            

      
       
      
 
  

 

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值