-
argument(=parameter)
-
operation
-
return
-
declaration > invoke(=call)
// μ΄ κ²½μ° returnμ κ²°κ³Όλ‘ μ(expression)μ΄ λ°νλλ€.
int add(int a, int b){return a+b;}- Cλ ν¨μλ₯Ό ꡬλ³νλ μ μΌν μλ³μκ° ν¨μ μ΄λ¦ λΏμ΄λ€.
** μ°Έκ³ , javaμ κ²½μ° λ€μ μμλ€μ΄ λ€λ₯΄λ©΄ μλ‘ λ€λ₯Έ ν¨μλ‘ μ²λ¦¬νλ€.
μλ λ€ κ°μ§ ν¨μλ signatureκ° λ€λ₯΄κΈ° λλ¬Έμ λ€λ₯Έ ν¨μμ΄λ€.
ν¨μμ μ΄λ¦μ κ°λ€. νμ§λ§ μλ‘ λ€λ₯Έ return typeκ³Ό argumentλ₯Ό κ°μ§κΈ° λλ¬Έμ μλ‘ λ€λ₯Έ ν¨μμ΄λ€.
int add(int a, int b){return a + b;}
int add(float a, float b){return a + b;}
float add(int a, int b){return a + b;}
float add(float a, float b){return a + b;}- λ¨Όμ μ΄ μ£Όμ λ₯Ό μ΄ν΄νκΈ° μν΄μλ stack frameμ΄λΌλ κ°λ μ μ΄ν΄ν νμκ° μλ€.
- stack frameμ μ μλ μ€νμ μ μ₯λλ ν¨μμ νΈμΆ μ 보 μ΄λ€.
- λ¨Όμ κ·Έλ¦Όμ 보μ.
-
stack frameμ ν¨μκ° μ°¨κ³‘μ°¨κ³‘ μμΈλ€.
-
κ°μ₯ μ΅κ·Όμ νΈμΆλ ν¨μκ° stackμ μ΅μλ¨μ μμΉν΄ μκ² λλ€.
-
μ»΄νμΌ μμ μμ κ° ν¨μκ° μ΄λ μ λμ λ©λͺ¨λ¦¬λ₯Ό μ°¨μ§νκ² λ μ§μ λν΄μ 미리 κ³μ°μ ν΄ λλλ€.
-
callerμ contextμμ ν¨μκ° νΈμΆλ ν, ν¨μμ operationμ΄ μ’ λ£λμ΄ caller contextμ λμκ°κ² λλ©΄,
- ν¨μκ° νΈμΆλ μμ μ μ½λμμ μμΉλ‘ λμκ°μΌ νλ€.
- return κ°μ returnκ°μ μ μ©μΌλ‘ κ΄λ¦¬νλ νΉμ λ μ§μ€ν°μ μμλ‘ λ€μ΄κ°κ² λλ€.
- ν¨μκ° λλ μμ μ 볡κ·μ£Όμλ₯Ό μμμΌ λμκ°κ² λλ―λ‘, stack frameμλ 볡κ·μ£Όμλ μκ³ μμ΄μΌ νλ€.
-
λ μμΈν κ·Έλ¦Όμ μλ κ·Έλ¦Όμ μ°Έμ‘°νλ€.
- μ κ·Έλ¦Όμ ν ν¨μκ° stack frameμ μ¬λΌκ°μ λ(ram) μ΄λ ν λ©λͺ¨λ¦¬ κ°λ€μ΄ λ€μ΄κ°λμ§μ λν΄ μ€λͺ ν κ·Έλ¦Όμ΄λ€.
- function
- νΉμ κ³μ°μ μννλ©° 리ν΄κ°μ΄ μλ€.
- λ°λμ μμ λ΄μμλ§ μ¬μ©.
- ν¨μ λ¨λ μΌλ‘ λ¬Έμ₯κ΅¬μ± λΆκ°.
- procedure
- νΉμ μμ μ μννλ©° 리ν΄κ°μ΄ μλ€.
- μμ λ΄μμ μ¬μ©ν μ μμ.
- void ν¨μκ° μ΄μ ν΄λΉ.
- Prototype
- main ν¨μ μ΄μ μ ν¨μμ μνμ μ μΈν΄λλλ€.
*μ°Έκ³
// μν μ μΈμμ λ€μ μΈ λ¬Έμ₯μ μ νν κ°μ μν μ νλ€.
int age(int);
int age(int a);
int age(int age); // μ’μ§ μμ λ€μ΄λ°.
.
.
.
int age(int age){
return age;
}-
c ν¨μμ νΉμ§
- call by valueκ° κΈ°λ³Έ.
- μ μΈμ λμλ ; λ₯Ό λΆμ΄μ§ μλλ€. (normally semicolon is appended when expression is declared)
-
ν€λνμΌ
- νμ€ ν¨μμ μνμ 미리 μμ±ν΄ λμ κ²μ ν€λνμΌ(Header File)μ΄λΌκ³ νλ€.
#includeλ¬Έμ ν΅ν΄μ ν€λνμΌμ μμ€ μμΌλ‘ μ½μ΄ λ€μ΄λ μν μ νλ€.- ν¨μλ₯Ό μ¬μ©νκΈ° μ μ μνλ§ μ μΈνλ€λ©΄ ν¨μμ 본체λ μ΄λμ μλλΌλ μκ΄μ΄ μλ€.
- νλμ μ€ν νμΌμ λ§λ€κΈ° μν΄μ μμ€λ₯Ό μ¬λ¬κ°λ‘ λλμ΄ κ°λ°νλ λ°©μμ λͺ¨λλΆν μ»΄νμΌ λ°©μμ΄λΌκ³ νλ€.
- λ€μμ μ½λλ₯Ό 보μ.
void main(){
int i = 3;
printf("%d %d\n", i, ++i); // 4, 4
}
- μ μ°μ°μ κ²°κ³Όκ° 3, 4κ° λμ¬κΊΌλΌκ³ μμμ νμ§λ§, μ€μ 4,4κ° λμ¨λ€.
- κ·Έ μ΄μ λ C μ»΄νμΌλ¬κ° ν¨μμμ νκ°ν λ, λ€μͺ½ μΈμλΆν° νκ°νλ©° λ€μ΄μ¨λ€. (κ·Έ μ΄μ λ κ°λ³μΈμλ₯Ό λ€λ£¨κΈ°κ° νΈν΄μ.)
- μμ½κ²λ, C νμ€μ ν¨μ νΈμΆμ, μΈμλ₯Ό μ λ¬νλ μμλ μ ν΄μ Έ μμ§ μλ€. μ΄ λ§μ, μ»΄νμΌλ¬λ§λ€ λ€λ₯΄κ² ν΄μν μ μμ μ¬μ§κ° μλ€λ λ§μ΄λ€.
- μ΄λ¬ν ν¨μμ νΈμΆκ³Ό κ΄λ ¨λ κ·μμ Calling Convetion μ΄λΌκ³ νλ€.

