ν¨μλ?
- ν¨μλ μ΄λ€ κΈ°λ₯μ νλλ‘ λ§λ μ½λ λ¬Άμ.
- μ²μ ν λ²λ§ μμ±νλ©΄ λμ€μ νμν λλ§λ€ κ³μ λΆλ¬ μ¬μ©ν μ μλ€.
- ν¨μλ μ λ ₯μ λ°μμ μΆλ ₯μ λ΄λ³΄λ΄λ λ°μ€λ‘ μκ°ν μ μλ€.
// μμ
#include <stdio.h>
int sum(int a, int b); // sum ν¨μ μ μΈ
int main(void){
int x=3, y=4;
int result;
result = sum(x, y) // sum ν¨μ νΈμΆ
printf("resultλ %dμ
λλ€.\n", result);
return 0;
}
int sum(int a, int b){ // sum ν¨μ μ μ
int hap;
hap = a+b;
return hap;
}
ν¨μμ 3κ°μ§ μν
1. ν¨μ μ μ
- ν¨μ μ μ = ν¨μλ₯Ό λ§λλ κ²
- λ°νν: ν¨μκ° μνλ νμ κ²°κ³Ό
- ν¨μμ΄λ¦: ν¨μμ κΈ°λ₯μ λ§λ μ΄λ¦
- 맀κ°λ³μ: ν¨μκ° κΈ°λ₯μ μννλ λ° νμν λ°μ΄ν°
λ°νν ν¨μμ΄λ¦(맀κ°λ³μ)
{
ν¨μ λ΄μ©
}
int sum(int a, int b){
int hap;
hap = a + b;
return hap;
}
! returnμ ν¨μμ μ€νκ²°κ³Όλ₯Ό λλ €μ£Όλ μ μ΄λ¬Έ
- λ°νν: sum ν¨μλ λ μ μμ ν©μ λ°ννλ―λ‘ intλ₯Ό μ¬μ©
- ν¨μμ΄λ¦: λ μ μλ₯Ό λνλ ν¨μμ΄λ sumμΌλ‘ ν¨μλͺ μ§μ
- 맀κ°λ³μ: sum ν¨μλ λ μ μλ₯Ό λνλ ν¨μμ΄λ―λ‘ intν λ³μλ₯Ό 2κ° μ μΈ
2. ν¨μ μ μΈ
- ν¨μ μ μΈ = μ»΄νμΌλ¬κ° μλ‘ λ§λ ν¨μλ₯Ό μΈμν μ μλλ‘ ν¨μμ ννλ₯Ό μ리λ μν
- CμΈμ΄μμλ κ°μ₯ λ¨Όμ main() ν¨μκ° μ»΄νμΌλ¬μ μν΄ μ»΄νμΌλκΈ° λλ¬Έμ main() ν¨μ λ€μ λ±μ₯νλ ν¨μλ μ»΄νμΌλ¬κ° μμ§ λͺ»ν΄ μ€λ₯κ° λ°μ
- λ°λΌμ μ»΄νμΌλ¬μκ² ν¨μκ° μ μλμ΄ μλ€κ³ mainν¨μ μμ μλ €μΌ νλ€! βΆ ν¨μμ μΈ
- νμν ν¨μλ₯Ό main ν¨μ λ°μ μ°¨λ‘λ‘ μ μνκ³ , main ν¨μ μμλ λͺ¨λ ν¨μλ₯Ό μ μΈνμ¬ μμ±
λ°νν ν¨μμ΄λ¦(맀κ°λ³μ);
int sum(int a, int b);
3. ν¨μ νΈμΆ
- ν¨μ νΈμΆ = λ§λ ν¨μλ₯Ό μ¬μ©
- ν¨μμ μ΄λ¦μ μ μ ν κ΄νΈλ₯Ό μ΄κ³ 맀κ°λ³μλ€μ λ£μ ν κ΄νΈλ₯Ό λ«λ κ²μΌλ‘ ν¨μλ₯Ό νΈμΆ
- λ°ννλ λ°μ΄ν°κ° μμ κ²½μ° =(λμ μ°μ°μ)λ₯Ό ν΅ν΄ λμ λ°μ μ μλ€.
λ°νλ°μ λ³μ = ν¨μμ΄λ¦(맀κ°λ³μ);
result = sum(x, y);
μ¬λ¬ κ°μ§ ν¨μ μ ν
1. 맀κ°λ³μμ λ°νκ°μ΄ λͺ¨λ μλ κ²½μ°
- 맀κ°λ³μμ λ°νκ°μ΄ λͺ¨λ μλ κ²½μ°λ κ°μ₯ μΌλ°μ μΈ ννμ ν¨μ
int Add(int num1, int num2) //맀κ°λ³μλ intν μ μ λμ΄λ©°, μ΄ λμ μ΄μ©ν λ§μ
μ μ§ν
{
int result = num1 + num2;
return result; // returnμ μν΄ resultμ κ°μ΄ λ°ν
}
2. λ°νκ°μ΄ μλ κ²½μ°
- λ°νκ°μ΄ μλ€κ³ ν΄μ κ°μ μΆλ ₯ν μ μλ κ²μ μλλ€.
- μ΄λ° κ²½μ°μλ λ°νν νμκ° μκΈ° λλ¬Έμ intλ₯Ό μ°μ§ μκ³ , voidλΌλ λ°ννμ μ¬μ©νλ€.
void ShowAddResult(int num) // μ¬κΈ°μ μ¬μ©ν voidλ λ°ννμ§ μλλ€λ λ»
{
printf("λ§μ
κ²°κ³Ό μΆλ ₯ : %d\n", num);
// returnλ¬Έμ΄ μλ€.
}
3. 맀κ°λ³μκ° μλ κ²½μ°
- ν¨μλ₯Ό νΈμΆν λ 맀κ°λ³μλ₯Ό μ λ¬νμ§ μλλ€.
int InputNum(void) // μ¬κΈ°μ μ¬μ©ν voidλ 맀κ°λ³μλ₯Ό μ λ¬νμ§ μλλ€λ λ»
{
int num;
scanf("%d", &num);
return num;
}
4. 맀κ°λ³μμ λ°νκ°μ΄ λͺ¨λ μλ κ²½μ°
- λ λ€ μλ κ²½μ°λ μ¬μ©λ°©λ²μ μκ°νλ ν¨μ
- μ΄ ν¨μλ λ¨μν λ©μμ§λ₯Ό μ λ¬νλ ν¨μμ΄κΈ° λλ¬Έμ 맀κ°λ³μμ μ λ¬λ, λ°νκ°λ λΆνμ
- λ°λΌμ, 맀κ°λ³μμ λ°νν λλ€ voidλ‘ μ μΈ
void HowToUse(void)
{
printf("λκ°μ μ μλ₯Ό μ
λ ₯νλ©΄ λ§μ
κ²°κ³Όλ₯Ό μΆλ ₯ν©λλ€.\n");
printf("μ μλ₯Ό μ
λ ₯ νμΈμ.\n")
}
λ³μμ μ‘΄μ¬κΈ°κ°κ³Ό μ κ·Όλ²μ
1. μ§μλ³μ
- μ§μλ³μ = νμ λ μ§μμμλ§ μ¬μ©λλ λ³μ
- μ€κ΄νΈ {} μμ μ μΈλλ λ³μλ μ§μλ³μ
- κ·Έλμ ν¨μκ° μ€κ΄νΈλ₯Ό λ²μ΄λλ©΄ μ¬λΌμ§λ€.
#include <stdio.h>
int main(void)
{
{
int num = 3;
}
printf("%d\n", num);
return 0;
}
μ»΄νμΌ μλ¬ λ°μ
βΆ λ³μ numμ μ€κ΄νΈλ‘ λ¬Άμ λΈλ‘ μμ μ μΈλμ΄ λΈλ‘ λ°μμ numμ μ¬μ©νλ €κ³ νλ©΄ λ³μλ₯Ό μ°Ύμ μ μκΈ° λλ¬Έμ μ»΄νμΌ μλ¬κ° λ°μ.
#include <stdio.h>
int main(void)
{
int num = 3;
{
printf("%d\n", num);
}
return 0;
}
βΆ λ³μ numμ main ν¨μ λΈλ‘μ μ μΈλμ΄ μκ³ , printfκ° μλ λΈλ‘λ main ν¨μ λΈλ‘ μμ μκΈ° λλ¬Έμ numμ΄ main ν¨μ λΈλ‘ μμμ μ¬μ©νλ κ²μ΄ λλ―λ‘ λ¬Έμ κ° μλ€.
2. μ μλ³μ
- μ μλ³μ = μ΄λ€ λ³μ μμ λ΄μμλ μ κ·Όν μ μλ λ³μ
- μ§μ λ³μμ λ¬λ¦¬ μ€κ΄νΈ λ΄μ μ μΈλμ§ μλλ€.
- μ μλ³μμ μ μΈμ νλ‘κ·Έλ¨μ ꡬ쑰λ₯Ό 볡μ‘νκ² λ§λ€κΈ° λλ¬Έμ κ°κΈμ μ ν.
- μ μλ³μμ μ§μλ³μμ μ΄λ¦μ λ€λ₯΄κ² νλ κ²μ΄ μ’λ€.
#include <stdio.h>
int num = 3;
int main(void)
{
printf("%d\n", num);
return 0;
}
βΆ numμ main ν¨μ λ°κΉ₯μ μ μΈλμ΄ μ΄λμμλ μ κ·Ό κ°λ₯
main ν¨μμμ νΈμΆν λ€μμ, num κ°μ μΆλ ₯νλλ° μ΄λ num κ°μ μ μ λ³μ num κ°μ΄λ€.
3. static λ³μ
- void μ§μλ³μλ₯Ό μ μΈν λ static μ μΈμ μΆκ°νλ©΄ static λ³μ(μ μ μ§μ° λ³μ)κ° λλ€.
- static λ³μλ μ½λ λΈλ‘ μμ μ μΈνλ―λ‘ μΌλ° μ§μλ³μμ κ°μ΄ μ¬μ© λ²μκ° λΈλ‘ μμΌλ‘ μ νλλ€.
- νμ§λ§ μΌλ° μ§μλ³μμ static λ³μλ μ μ₯ 곡κ°μ΄ λ©λͺ¨λ¦¬μ μ‘΄μ¬νλ κΈ°κ°μ΄ λ€λ₯΄λ€.
static μλ£ν λ³μμ΄λ¦;
#include <stdio.h>
void plusplus(void); // plusplus ν¨μ μ μΈ
int main(void)
{
int i;
for (i=0; i<5; i++)
plusplus();
return 0;
}
void plusplus(void)
{
int num1 = 0; // μΌλ° μ§μλ³μλ‘ μ μΈ
static int num2 = 0; // static λ³μλ‘ μ μΈ
num1++;
num2++;
printf("local : %d, static : %d\n", num1, num2);
}
// μ€νκ²°κ³Ό
local : 1, static : 1
local : 1, static : 2
local : 1, static : 3
local : 1, static : 4
local : 1, static : 5
- μΌλ° μ§μλ³μ:
- ν¨μκ° νΈμΆλ λ λ©λͺ¨λ¦¬μ ν λΉλκ³ λ°νλ λ λ©λͺ¨λ¦¬μμ μ κ±°λλ€.
- κ·Έλμ μΌλ° μ§μλ³μκ° νΈμΆλ λλ§λ€ λ©λͺ¨λ¦¬μ μλ‘κ² ν λΉλκ³ κ·Έλλ§λ€ 1λ‘ μ΄κΈ°ν.
- static λ³μ:
- μ μ₯ 곡κ°μ΄ ν λΉλμ΄ μ μ§νλ μμ μ΄ ν¨μ νΈμΆκ³Ό 무κ΄.
- static λ³μλ νλ‘κ·Έλ¨μ΄ μ€νλ λ λ©λͺ¨λ¦¬μ ν λΉλλ©° νλ‘κ·Έλ¨μ΄ λλ λκΉμ§ μ‘΄μ¬νλ€.
- κ·Έλμ ν¨μκ° νΈμΆλ λλ§λ€ 1μ© μ¦κ°νλ―λ‘ 1λΆν° 5κΉμ§ μΆλ ₯λλ κ²μ΄λ€.
4. register λ³μ
- μ§μλ³μμ register λΌλ μ μΈμ μΆκ°νλ©΄ λ³μλ λ©λͺ¨λ¦¬ λμ CPUμ λ μ§μ€ν°λ₯Ό μ¬μ©νλ€.
- λ μ§μ€ν°λ CPU μμ μμ΄ λ°μ΄ν° μ²λ¦¬ μλκ° κ°μ₯ λΉ λ₯Έ 곡κ°μ΄λ―λ‘ μΌλ° λ³μλ³΄λ€ μλκ° λΉ λ₯΄λ€.
register μλ£ν λ³μμ΄λ¦;
βΆ register μ μΈμ μΆκ°ν΄λ μ»΄νμΌλ¬κ° ν©λΉνμ§ μλ€κ³ νλ¨νλ©΄ λ μ§μ€ν°μ ν λΉλμ§ μλλ€.
λ°λλ‘ register μ μΈμ νμ§ μμλ μ»΄νμΌλ¬κ° λ μ§μ€ν°μ ν λΉν΄μΌκ² λ€κ³ νλ¨νλ©΄ λ μ§μ€ν°μ ν λΉλλ€.
μ§κΈμ κ±°μ μ΄μ©λμ§ μλ μ§μ μ
μ¬κ·ν¨μ
- μ¬κ·ν¨μ = ν¨μ λ΄μμ μκΈ° μμ μ λ€μ νΈμΆνλ ν¨μ
- μ¬κ·ν¨μλ₯Ό μμ±ν λλ λ°λμ μ΄ ν¨μμ νΈμΆμ΄ λλ μ μλ μ§μ μ λ§λ ¨ν΄ μ£Όμ΄μΌ νλ€.
- κ·Έλ μ§ μμΌλ©΄ 무ν루νμ λΉ μ§κ³ runtime errorκ° λ°μνλ€.
#include <stdio.h>
int factorial(int n)
{
if(n==0)
return 1;
return n * factorial(n-1);
}
int main(void)
{
printf("3! = %d\n", factorial(3));
return 0;
}
//μ€νκ²°κ³Ό
3! = 6
- 맀κ°λ³μμ λ°νκ°μ μμ°μμ΄κΈ° λλ¬Έμ intνμΌλ‘ μ§μ
- factorial ν¨μμμλ nλΆν° μμμΌλ‘ 1μ© κ°μνλ©΄μ μ¬κ·νΈμΆμ νλ€.
- if λ¬Έμ νμΆμ‘°κ±΄μΌλ‘ nμ΄ 0μ΄ λμμ λ ν¨μκ° μ’ λ£λλλ‘ μ μλμ΄ μλ€.
βΆ factorial ν¨μλ κ³μ° κ²°κ³Όκ° μ¦μ ꡬν΄μ§λ κ²μ΄ μλλΌ μ¬κ·νΈμΆλ‘ n -1μ κ³μ μ λ¬νλ€κ° nμ΄ 0μΌ λ λΉλ‘μ 1μ λ°ννλ©΄μ nκ³Ό κ³±νκ³ λ€μ κ²°κ΄κ°μ λ°ννλ€.
κ·Έ λ€ nκ³Ό λ°νλ κ²°κ³Όκ°μ κ³±νμ¬ λ€μ λ°ννλ κ³Όμ μ λ°λ³΅νλ€.
μΆμ²: https://sejong-kr.libguides.com/c.php?g=942233&p=6822325