[C++] 호출 스택
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#include <iostream>
using namespace std;
// 호출 스택
void Func1()
{
cout << "Func1" << endl;
Func2(1, 2);
}
void Func2(int a, int b)
{
cout << "Func2" << endl;
Func3(10);
}
void Func3(float a)
{
cout << "Func3" << endl;
}
int main()
{
cout << "main" << endl;
Func1();
return 0;
}
|
cs |

순서가 안 맞으면 빌드가 안 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#include <iostream>
using namespace std;
// 호출 스택
void Func3(float a)
{
cout << "Func3" << endl;
}
void Func2(int a, int b)
{
cout << "Func2" << endl;
Func3(10);
}
void Func1()
{
cout << "Func1" << endl;
Func2(1, 2);
}
int main()
{
cout << "main" << endl;
Func1();
return 0;
}
|
cs |

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
#include <iostream>
using namespace std;
// 호출 스택
// 함수 선언
void Func1();
void Func2(int hp, int mp); // 함수의 모양만 만들어주면 된다. 밑의 void Func2(int a, int b)처럼 a, b일 필요는 없다.
void Func3(float a);
int main()
{
cout << "main" << endl;
Func1();
return 0;
}
void Func1()
{
cout << "Func1" << endl;
// [Assembly Language] push 2
// [Assembly Language] push 1
// [Assembly Language] call Func2
Func2(1, 2);
Func3(10.0f);
}
void Func2(int a, int b)
{
cout << "Func2" << endl;
Func3(10);
}
void Func3(float a)
{
cout << "Func3" << endl;
}
|
cs |


'⭐ Programming > C++' 카테고리의 다른 글
[C++] TextRPG (0) | 2022.03.24 |
---|---|
[C++] 오버 로딩, 오버 로딩과 오버라이딩의 차이, 함수 마무리 (0) | 2022.03.22 |
[C++] 호출 스택 (0) | 2022.03.22 |
[C++] 지역변수와 값 전달 (0) | 2022.03.21 |
[C++] Stack Frame 스택 프레임 (0) | 2022.03.21 |
댓글
이 글 공유하기
다른 글
-
[C++] TextRPG
[C++] TextRPG
2022.03.24 -
[C++] 오버 로딩, 오버 로딩과 오버라이딩의 차이, 함수 마무리
[C++] 오버 로딩, 오버 로딩과 오버라이딩의 차이, 함수 마무리
2022.03.22함수 마무리 인프런 Rookiss님의 'Part1: C++ 프로그래밍 입문' 강의를 기반으로 정리한 필기입니다. 😎[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 강의 들으러 가기! 오버 로딩 오버로딩은 중복 정의이다. 함수 이름의 재사용을 의미한다. 오버 로딩과 오버라이딩의 차이 함수 오버로딩(Overloading)과 오버라이딩(Overriding)은 객체 지향 프로그래밍에서 중요한 개념이다. 함수 오버로딩(Overloading)은 하나의 클래스 내에서 같은 이름을 가진 함수를 여러 개 정의하는 것을 의미한다. 이때 함수의 매개변수의 수나 타입, 반환값의 타입 등을 다르게 정의하여 사용합니다. 이렇게 정의된 여러 개의 함수 중에서 호출 시 전달된 인자와 가… -
[C++] 호출 스택
[C++] 호출 스택
2022.03.22호출 스택 인프런 Rookiss님의 'Part1: C++ 프로그래밍 입문' 강의를 기반으로 정리한 필기입니다. 😎[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 강의 들으러 가기! 호출 스택1 더보기 #include using namespace std; // 호출 스택 void Func1() { cout -
[C++] 지역변수와 값 전달
[C++] 지역변수와 값 전달
2022.03.21지역변수와 값 전달 인프런 Rookiss님의 'Part1: C++ 프로그래밍 입문' 강의를 기반으로 정리한 필기입니다. 😎[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 강의 들으러 가기! 메모리 구조 TEXT DATA: .rodata, .data, .bss
댓글을 사용할 수 없습니다.