반응형
출처 - 열혈 C++ 프로그래밍
#include <stdio.h>
int SimpleFunc(int num);
int main()
{
int num = 10; // 여기
SimpleFunc(num);
return 0;
}
int SimpleFunc(int num) // 여기
{
return num; // 여기
}
이렇게 3군데에서 메모리 공간이 할당되면서 동시에 초기화가 이루어진다. (C++에서 객체도 마찬가지)
main 함수에서 int num = 10; 이 부분이야 당연히 알거고...
int SimpleFunc(int num) 이 부분에서는 함수가 호출되고 매개변수로 선언된 변수들
메모리가 할당됨과 동시에 인자로 받아온 값으로 초기화가 된다.
문제는 SimpleFunc 함수 내부에 있는 return num; 이부분이다.
값을 return 할 때에도 메모리가 할당이 되고 동시에 리턴할 값으로 초기화가 이루어진다.
(조금만 생각하면 당연한 일이다. 예를들어 문자열의 길이를 반환하는 함수를 만든다고 하면 매개변수로는
char *형을 넘겨줄거고 이 문자열의 길이를 세어서 반환은 int형으로 해줄텐데...
함수를 호출한 곳에서 값을 받으려면 어딘가에는 저장이 되어 있어야한다.)
그리고 이때 반환값은 값 복사(Call By Value)로 호출한 곳으로 전달이 된다.
반응형
'C > Study' 카테고리의 다른 글
[C] 10진수를 2진수로 출력하기 (0) | 2024.12.15 |
---|---|
[C] NULL과 널문자 (0) | 2024.12.15 |
[C] scanf 함수 char형 하나의 문자 입력받을 시 발생하는 문제 (0) | 2024.12.15 |
[C] C언어의 메모리 구조 (스택, 힙, 데이터, 코드 영역) (0) | 2024.12.15 |
[C] 뇌를 자극하는 윈도우즈 시스템 프로그래밍 명령 프롬프트 프로젝트 코드 (0) | 2024.12.15 |