[CμΈμ΄] ν¨μμ μΈμλ‘ λ°°μ΄ μ λ¬νκΈ°
π μΈμμ λ¬μ κΈ°λ³Έλ°©μμ κ°μ 볡μ¬μ΄λ€
λ§€κ°λ³μ μ λ¬ λ°©λ²μ 1) κ°μ μν μ λ¬ (Call by value) μ 2) μ°Έμ‘°μ μν μ λ¬ (Call by reference)λ‘ λλλ€.
κ°μ μν μ λ¬μ νΈμΆν ν¨μμμ μλ¬ν μΈμμ κ°μ 볡μ¬νμ¬ νΈμΆλ°μ ν¨μμ μ λ ₯ λ§€κ° λ³μμ μ΄κΈ°κ°μ μ€μ νλ λ°©μμ΄λ€. μ¦, νΈμΆν κ³³μ μΈμμ νΌνΈμΆν κ³³μ μΈμμ κ°μ κ°μ§λ§ λ©λͺ¨λ¦¬λ λ 립μ μ΄λ€.
λ°λ©΄ μ°Έμ‘°μ μν μ λ¬μ νΈμΆν ν¨μμμ μ λ¬ν μΈμλ₯Ό νΌνΈμΆ ν¨μμ μ λ ₯ λ§€κ° λ³μκ° μ°Έμ‘°νμ¬ μ¬μ©νλ λ°©μμ΄λ€. μ¦, νΈμΆν κ³³μ μΈμμ νΌνΈμΆν κ³³μ μΈμλ κ°μ κ°μ²΄μ΄λ€.
CμΈμ΄μμ λ§€κ° λ³μλ₯Ό μ λ¬νλ λ°©μμ κ°μ μν μ λ¬ (call by value)λ₯Ό μ¬μ©νλ€.
ν¬μΈν° λ³μμ²λΌ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό κ°μ κ°λ λ°μ΄ν°λ₯Ό μΈμλ‘ μ λ¬νλ κ²μ μ£Όμμ μν νΈμΆ(call by memory)λΌκ³ λΆλ₯Έλ€. νμ§λ§ κ²°κ΅ μ£Όμμ μν νΈμΆλ ν¬μΈν° λ³μκ° κ°κ³ μλ κ°μ΄ λ©λͺ¨λ¦¬ μ£ΌμμΈ κ²μ΄λ―λ‘ μ΄ λν κ°μ μν νΈμΆ λ°©μμ΄λ€.
λ°°μ΄μ ν΅μ§Έλ‘ λ겨λ°μΌλ €λ©΄ λ§€κ°λ³μλ‘ λ°°μ΄μ μ μΈν μ μμ΄μΌ νλ, νμ©λμ§ μλλ€. λ°λΌμ λ°°μ΄μ λ겨λ°κΈ° μν΄μλ λ°°μ΄μ μ£Όμκ°μ μ λ¬ν΄μΌνλ€.
ν¨μ λ΄μμ μΈλΆμ μ μΈλ λ°°μ΄μ μ κ·Όνμ¬ κ°μ μΆλ ₯νλ μμ
#include <stdio.h>
void ShowArayElem(int *param,int len) // λ°°μ΄μ μ κ·ΌνκΈ° μν΄ μ£Όμκ° λ§€κ°λ³μλ‘ ! λ°°μ΄μ κΈΈμ΄μ 보λ λ°κΈ°
{
int i;
for (i = 0; i < len; i++)
{
printf("%d ", param[i]); // int ν ν¬μΈν° λ³μμ μ΄λ¦μ λμμΌλ‘ λ°°μ΄ννμ μ κ·Ό μ§ν
}
printf("\n");
}
int main()
{
int arr1[3] = { 1,2,3 };
int arr2[5] = { 4,5,6,7,8 };
ShowArayElem(arr1, sizeof(arr1) / sizeof(int));
ShowArayElem(arr2, sizeof(arr2) / sizeof(int));
return 0;
}
ν¨μ λ΄μμ μΈλΆμ μ μΈλ λ°°μ΄μ μ κ·Όνμ¬ κ° λ³κ²½
#include <stdio.h>
void ShowArayElem(int* param, int len) // λ°°μ΄μ μμλ₯Ό 보μ¬μ£Όλ ν¨μ
{
int i;
for (i = 0; i < len; i++)
printf("%d", param[i]);
printf("\n");
}
void AddArayElem(int* param, int len, int add) // λ°°μ΄μ μμμ ν©μ νλ ν¨μ
{
int i;
for (i = 0; i < len; i++)
param[i] = param[i] + add;
}
int main()
{
int arr[3] = { 1,2,3 };
AddArayElem(arr, sizeof(arr) / sizeof(int), 1);
ShowArayElem(arr, sizeof(arr) / sizeof(int));
AddArayElem(arr, sizeof(arr) / sizeof(int), 2);
ShowArayElem(arr, sizeof(arr) / sizeof(int));
AddArayElem(arr, sizeof(arr) / sizeof(int), 3);
ShowArayElem(arr, sizeof(arr) / sizeof(int));
return 0;
}