728x90
μΈμ μ λ¬ λ°©λ²
1. κ°μ μν μ λ¬
- μΈμ μ λ¬μ κΈ°λ³Έλ°©μμ κ°μ '볡μ¬'μ΄λ€.
- κ°μ 볡μ¬ν΄μ μΈμλ‘ μ λ¬νλ©΄ νΈμΆνλ ν¨μμ κ°μ λ°λμ§ μλλ€.
- κ°μ μν μ λ¬(Call-by-value): ν¨μλ₯Ό νΈμΆν λ λ¨μν κ°μ 볡μ¬ν΄μ μ λ¬νλ ν¨μνΈμΆ
#include <stdio.h>
void add(int a); // ν¨μ μ μΈ
int main(void)
{
int num = 10;
add(num); // ν¨μ νΈμΆ
printf("num : %d\n",num);
return 0'
}
void add(int a) // ν¨μ μ μ
{
a = a + 5;
}
μ€νκ²°κ³Ό
num : 10
- ν¨μκ° λ°νλ μ΄νμλ νΈμΆν ν¨μμ μλ λ³μμ κ°μ λ³νμ§ μλλ€.
- μλνλ©΄ 맀κ°λ³μ aμ λ©λͺ¨λ¦¬ μ£Όμμ μ μ₯λ κ°μ main ν¨μλ‘ λκ²¨μ£Όμ§ μμκΈ° λλ¬Έμ΄λ€.
2. μ°Έμ‘°μ μν μ λ¬
- μ°Έμ‘°μ μν μ λ¬μ μΈμλ‘ λ³μμ κ°μ μ λ¬νλ κ²μ΄ μλ, μ£Όμκ°μ μ λ¬νλ€.
- μ°Έμ‘°μ μν μ λ¬(Call-by-reference): μ£Όμκ°μ μ λ¬νλ ν¨μνΈμΆ
- μ΄ λ°©λ²μ μΈμλ‘ μ λ¬λ λ³μμ κ°μ ν¨μ λ΄μμ λ³κ²½ν μ μλ€.
#include <stdio.h>
void add(int *a); // ν¨μ μ μΈ
int main(void)
{
int num = 10;
add(&num); // ν¨μ νΈμΆ
printf("num : %d\n", num);
return 0;
}
void add(int *a) // ν¨μ μ μ
{
*a = *a + 5;
}
μ€νκ²°κ³Ό
num : 15
- λ³μμ μ£Όμκ°μ μΈμλ‘ λ°μ ν΄λΉ λ³μμ μ§μ μ κ·Όνλ€.
- add ν¨μμ 맀κ°λ³μμΈ aλ numμ κ°λ¦¬ν€κ³ , *aλ numμ μλ―Ένλ€.
- λ°λΌμ main ν¨μμ μλ numμ μ¬μ©ν μ μμΌλ©° κ·Έ κ°μ λ°κΎΈλ κ²λ κ°λ₯νλ€.
λ°°μ΄μ ν¨μμΈμλ‘ μ λ¬νκΈ°
- λ°°μ΄μ ν΅μ§Έλ‘ μ λ¬νλ λ°©λ²μ μλ€.
- CμΈμ΄λ 맀κ°λ³μλ‘ λ°°μ΄μ΄ μ μΈλλ κ²μ νμ©νμ§ μμμ ν¨μμ μΈμλ‘ λ°°μ΄μ μ λ¬νμ§ λͺ»νλ€.
- λ°°μ΄μ ν΅μ§Έλ‘ μ λ¬νμ§ μλ λμ λ°°μ΄μ μ£Όμκ°μ μ λ¬ν μ μλ€.
- λ°°μ΄μ μ΄λ¦μ ν¬μΈν°μ΄λ―λ‘ λ°°μ΄μ μ΄λ¦μ΄ λ°°μ΄μ 첫 λ²μ§Έ μμλ₯Ό κ°λ¦¬ν€λ ν¬μΈν°λ‘ μ¬μ©ν μ μλ€.
βΆ λ°°μ΄μ 맀κ°λ³μλ‘ μ¬μ©νλ €λ©΄ () κ΄νΈ μμμ 맀κ°λ³μ μ΄λ¦ λ€μ [] λκ΄νΈλ₯Ό λΆμ΄κ±°λ 맀κ°λ³μλ₯Ό *ν¬μΈν°λ‘ μ§μ ν΄μ€λ€.
λ°νν ν¨μμ΄λ¦(μλ£ν 맀κ°λ³μ[])
{
}
λ°νν ν¨μμ΄λ¦(μλ£ν *맀κ°λ³μ)
{
}
#include <stdio.h>
void arrprintf(int *arg);
int main(void)
{
int arr[3] = {10, 20, 30};
arrprintf(arr); // λ°°μ΄μ μ΄λ¦μ΄ μ§λκ³ μλ μ£Όμκ° μ λ¬
return 0;
}
void arrprintf(int *arg)
{
int i;
for(i = 0; i < 3; i++)
printf("%d ", arg[i]); // argλΌλ μ΄λ¦μ λ°°μ΄μ μ΄λ¦μ²λΌ μ¬μ©
printf("\n");
}
μ€νκ²°κ³Ό
10 20 30
- int *argμ int arg[]λ λμΌν μ μΈμ΄λ€.
- int arg[]κ° λ°°μ΄μ΄ μΈμλ‘ μ λ¬λλ€λ λλμ λ κ°νκ² μ€λ€
- λ°λΌμ λ°°μ΄μ μ£Όμκ°μ΄ μΈμλ‘ μ λ¬λ λλ int arg[] ννμ μ μΈμ μ£Όλ‘ μ¬μ©νλ€.
ν¨μμ ν¬μΈν°
- ν¨μ μ΄λ¦μ ν¨μκ° μ μλμ΄ μλ λ©λͺ¨λ¦¬μ μμ μμΉμ΄λ€.
- ν¨μ μ΄λ¦λ ν¬μΈν°μ΄λ―λ‘ printfμμ μΆλ ₯ν΄ λ³΄λ©΄ λ©λͺ¨λ¦¬ μ£Όμκ° λμ¨λ€.
#include <stdio.h>
void hello(void);
int main(void)
{
printf("%p\n",hello);
return 0;
}
void hello(void)
{
printf("Hello, world!\n");
}
μ€νκ²°κ³Ό
008613BB
<ν¨μ ν¬μΈν° λ³μ μ μΈ>
λ°νκ°μλ£ν (*ν¨μν¬μΈν°μ΄λ¦) (맀κ°λ³μ μλ£ν)
#include <stdio.h>
int add(int num1, int num2);
int main(void)
{
int (*fptr)(int, int); // intν λ°νκ°, intν 맀κ°λ³μ λ κ°κ° μλ ν¨μ ν¬μΈν° fptr μ μΈ
fptr = add; // add ν¨μμ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό ν¨μ ν¬μΈν° fptrμ μ μ₯
printf("%d\n", fptr(10, 20)); // ν¨μ ν¬μΈν°λ‘ add ν¨μ νΈμΆ
return 0;
}
int add(int num1, int num2) // intν λ°νκ°, intν 맀κ°λ³μ λ κ°
{
return num1 + num2;
}
μ€νκ²°κ³Ό
30
- ν¨μκ° λ°ννμ΄ intνμ΄κ³ 맀κ°λ³μλ‘ intν λ³μκ° λ κ° μ μΈλμμΌλ, μ΄ ν¨μμ μ£Όμ κ° μ μ₯μ μν ν¨μ ν¬μΈν° λ³μλ λ€μκ³Ό κ°μ΄ μ μΈνλ€.
βΆ κ΅³μ΄ ν¨μ ν¬μΈν°λ₯Ό μ°μ§ μμλ ν¨μλ₯Ό μ§μ νΈμΆνμ¬ κ°μ κΈ°λ₯μ νλ μ½λλ₯Ό λ§λ€ μ μλ€.
νμ§λ§, ν¨μ ν¬μΈν°λ ν¨μλ₯Ό λ°λ‘ λ§λ€κ³ , λμ€μ ν¨μλ₯Ό νΈμΆνλ κ³³μμ μ°μ° λ°©λ²μ ν¨μλ‘ κ΅¬νν λ μΈ μ μλ€.
λν, νλμ νλ‘κ·Έλ¨μ΄ μ¬λ¬ κ°μ νμΌλ‘ λΆλ¦¬λμ΄ μμ λ λ€λ₯Έ νμΌμ μλ μ μ ν¨μλ₯Ό νΈμΆνλ λ°©λ²μΌλ‘ ν¨μ ν¬μΈν°λ₯Ό μΈ μλ μλ€.
μΆμ²: https://sejong-kr.libguides.com/c.php?g=942235&p=6822368
'νλ‘κ·Έλλ° > CμΈμ΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
νμΌ μ μΆλ ₯ (0) | 2024.08.29 |
---|---|
ꡬ쑰체 (0) | 2024.08.21 |
ν¬μΈν° & λ°°μ΄ (0) | 2024.08.16 |
ν¬μΈν° (0) | 2024.08.15 |
λ°°μ΄ (0) | 2024.08.14 |