¨ç ¼Æ

l        ¦ó ¿× ¨ç ¼Æ ?

1.      C»y¨¥¨Ï¥Îªº¨ç¼Æ¥i¥H¼g¥X«D±`º}«Gªºµ{¦¡µ²ºc¡A¨Ïµ{¦¡Â²³æ¤Æ¡A°»¿ù®e©ö¡C

2.      ±N­«½Æ¤§¬Y¨Ç«ü¥O¼¶¼g¦¨¤@­Ó¨ç¼Æ¡A¥i´î¤Ö½s¿èµ{¦¡®É¶¡¡A§ó¥i¨Ïµ{¦¡ºë²¡A²M´·¤F¸Ñ¡C

3.      C»y¨¥¨Ï¥Îªº¨ç¼Æ¨ä©I¥s¤èªk»P¼Æ¾Ç¤W¨Ï¥Î¨ç¼Æ§¹¥þ¬Û¦P,

¨Ò ¦p :

a = function ( x , y ) ;

 

ªí¥Ü±NÅÜ¼Æ x , y ¿é¤J¨ç¼Æ function , ¨ä¶Ç¦^¨ç¼Æ­È³]©wµ¹ÅÜ¼Æ a ¡C

 

l        ¨ç ¼Æ ªº µ² ºc (®æ¦¡)

1.        ¨ç ¼Æ ªº ©w ¸q (Function Definition)

2.        ©I ¥s ¨ç ¼Æ (Function Call)

3.        ¨ç ¼Æ ­ì §Î «Å §i (Function Prototype)

 

l          ¨ç ¼Æ ªº ©w ¸q (®æ¦¡)

 
 
Àx¦sÃþ§O ¸ê®Æ«¬§O ¨ç¼Æ¦WºÙ (§Î¦¡¤Þ¼Æªº¦ê¦C)
 
  {
       §Î¦¡¤Þ¼Æªº«Å§i ;
 
       ¨ç¼Æªº¥»Åé(°õ¦æ±Ô­z)
   }

Example:

 

void Line (void)

 

{

int j;

 

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

printf(¡§%d\n¡¨,j);

 

}

l        ¡@¨ç ¼Æ ªº Àx ¦s Ãþ §O

 

¨ç ¼Æ ªº Àx ¦s Ãþ §O

 

Àx¦sÃþ§O

¥\¯à±Ô­z

static

¥u¯à¦b¶i¦æ«Å§iªº½sͳæ¦ì¤º¥i¥H°õ¦æ

extern

¦b¶i¦æ«Å§iªº½sͳæ¦ì¥H¥~¤]¥i°õ¦æ

 
ps. ¤@ ¯ë ¨ç ¼Æ ªº Àx ¦s Ãþ §O ¥i ¥H ¬Ù ²¤ , ¦¹ ®É ·í §@ "extern" ³B ²z ¡C

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

l        ¨ç ¼Æ ªº ¶Ç ¦^ ­È »P ¸ê ®Æ §Î ºA


­n ¨D ¨ç ¼Æ °e ¦^ ¶Ç ¦^ ­È (¨ç¼Æ­È) , ¥² ¶· ¦b ¨ç ¼Æ ¥» Åé ¤¤ §Q ¥Î return ±Ô ­z ¶i ¦æ , ¨Ò ¦p :

return ( ÅܼƩΦ¡¤l ) ;

 

¦¹ ³B ¥² ¶· ¥ý «Å §i ¶Ç ¦^ ­È (¨ç¼Æ­È) ªº ¸ê ®Æ §Î ºA ¬O ¤° »ò ¡C

 

 

 

return()±Ô­z¤§¥Øªº¦p¤U    

 

1.                             ±N±±¨îÅv¶Ç¦^µ¹©I¥sµ{¦¡
2.                             ±Nreturn()±Ô­z«á¬A¸¹¤º¤§¼Æ­È¶Çµ¹©I¥sµ{¦¡¤§¤è¦¡

l        ­È ªº ¶Ç »¼ ¤è ªk

( 1 ) ¶Ç »¼ ÅÜ ¼Æ ­È ¥» ¨­ ( Call by value )

( 2 ) ¶Ç »¼ ÅÜ ¼Æ ªº ¦ì §} ( Call by reference )

 

       Example 1: ¶Ç­È©I¥s 
 
#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: ¶Ç§}©I¥s 
 
#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
 
/* ================================================== */
/*    µ{¦¡¹ê¨Ò:³Å­È©M¶Ç§}ªº°Æµ{§Ç©I¥s(¥æ´«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;
}
 
/* ---------------------¥Dµ{¦¡---------------------- */
void main()
{
   int x = 10, y=0;                    /* §½³¡Åܼƫŧi */
 
   printf("               X    Y   \n");
   printf("  ªì­È         %d   %d   \n",x,y);
   swap1(x,y);                        /* ¶Ç­È°Æµ{§Ç©I¥s(¥æ´«XY) */
   printf("  ¶Ç­È         %d   %d   \n",x,y);
 
   swap2(&x,&y);                  /* ¶Ç§}°Æµ{§Ç©I¥s(¥æ´«XY) */
   printf("  ¶Ç§}         %d   %d   \n",x,y);
}
 
Result
X
Y
ªì­È
10
0
¶Ç­È
10
0
¶Ç§}
0
10
 

¦^¸ê®Æµ²ºc±Ð¾Ç¤jºõ  ¤U¤@³æ¤¸