C 공부를 하다가 의문점이 생겨서 글을 올립니다.
함수 선언을 int* add1(int a, int b); 과 같이 했습니다.
그리고 main()에서
(1) int sum1=add1(a,b);
(2) int* sum1=add1(a,b);
이렇게 했을 때
함수의 정의를
(1)
int* add1(int a, int b)
{
int tmp=a+b;
return tmp;
}
(2)
int* add1(int a, int b)
{
static int* tmp;
*tmp=a+b;
return &tmp;
}
2가지로 나눠서 해봤는데
둘다 값이 a+b 한 값으로 나왔습니다..
반환형이 포인터면 주소 값을 넘겨주고 그걸 포인터 변수가 받는게 맞는거 같은데,
(1) 처럼 그냥 값을 넘겨주고 값을 받아도 출력이 되는 까닭을 모르겠습니다.