📚함수

1
2
3
4
5
<한정자> <반환형> <함수 이름>(<매개변수자료형 매개변수>)
{
  // body
}


📄값에 의한 호출

C++처럼 함수에 아래처럼 인자를 전달하면 값을 복사해서 함수 안에서만 연산이 일어나고 실매개변수 num의 값이 변하지 않는다.

num의 값을 1 증가 시키려고 Add 함수를 호출했지만 함수로 전달되는 인자는 값만 복사된 것이므로 함수 안에서만 값 1이 2로 증가하고 이 값은 Add 함수 안에서만 사용 가능하다.

따라서 아래의 Add 함수는 Main 함수 안에 있는 num의 값에 영향을 주지 못한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
namespace CSharp
{
    class Program
    {
        static void Add(int a)  // 값에 의한 호출
        {
            ++a;
        }

        static void Main(string[] args)
        {
            int num = 1;

            Program.Add(num);      // 실매개변수 num
            Console.WriteLine(num);
        }
    }
}


📄참조에 의한 호출

값을 복사하지 않고 참조로 인자를 전달하여 함수 안에서 연산을 하면 실매개변수의 값이 바뀐다.

따라서 아래의 Add 함수를 호출하면 num의 주소에 있는 값을 1 증가 시킨 것이므로 실매개변수 num이 1 증가하는 것을 알 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
namespace CSharp
{
    class Program
    {
        static void Add(ref int a)  // 참조에 의한 호출
        {
            ++a;
        }

        static void Main(string[] args)
        {
            int num = 1;

            Program.Add(ref num);         // 실매개변수 num
            Console.WriteLine(num);
        }
    }
}



Leave a comment