전체 글(155)
-
Ch 09. 함수 - 10. inline
이전에 함수를 만들면 해당 내용을 스택에 쌓고 비우는 과정, 추가로 이 함수가 어디로 부터 호출되었는지에 대한 정보를 저장해두는 것과같은 비용들이 발생한다고 했었는데 이런 비용 발생을 하지 않게 하는 방법으로 함수의 inline화라는 것이 있다. 함수의 인라인화inline은 함수를 호출하지 않고, 함수 코드를 호출하는 곳에 복붙해버려라 라고 컴파일러에게 요청하는 키워드로 사용 방법은 함수의 정의 앞에 inline이라는 키워드를 붙여주면 된다.inline int add(int a, int b) { return a + b;}이렇게 inline화 된 함수의 경우는 int main() { int c = add(1, 2);}이렇게 호출되었을때 이 함수로 가서 실행하는 것이 아니라 내부 코드 자체를 가져..
2025.04.18 -
Ch 09. 함수 - 08. 함수 포인터
1. 함수 포인터함수 포인터(function pointer)는 함수의 주소를 저장하는 포인터로 함수도 결국 메모리에 저장되고, 이 함수의 주소를 변수에 담아서 나중에 호출도 가능하다 에서 나온 개념으로 함수도 결국은 메모리 어딘가에 저장된 코드 블록의 시작 주소이고 이 주소를 일반 변수처럼 포인터에 저장하고, 그걸 통해 호출하도록 만들어 주는 기능이라고 보면 된다.int add(int a, int b) { return a + b;}int main() { int result = add(3, 4); // add 함수 호출}우리는 함수를 위와 같이 어딘가에 정의해두고 그 함수명으로 호출문을 작성해서 함수를 호출했었다. 반면 함수 포인터는 int add(int a, int b) { return..
2025.04.18 -
Ch 09. 함수 - 07. 함수 오버로딩
1. 함수의 오버로딩(overloading)함수 오버로딩(function overloading)은 같은 이름의 함수를 여러 개 정의하는데 매개변수의 타입이나 개수, 순서를 다르게 구성하여 서로 구별되게 만드는 기능으로 정리하면 하나의 함수 명으로 매개변수를 다르게 해서 여러개를 만들 수 있게 하는 것을 말한다.#include void print(int n) { std::cout 2. 오버로딩이 가능한 조건함수의 오버로딩은 매개변수의 개수, 자료형, 순서를 다르게 하면 생성이 가능하다. 1) 매개변수의 갯수가 다른 함수의 오버로딩void func(int a, int b){ // 매개변수 2개 ....}void func(int a, int b, int c){ // 매개변수..
2025.04.18 -
Ch 09. 함수 - 06. 디폴트 매개변수
1. 디폴트 매개변수(default parameter)함수의 디폴트 매개변수(default parameter)란 함수 호출 시 인자를 생략해도 자동으로 들어갈 기본값을 미리 지정해주는 기능이다 2. 기본 문법void func(int a=기본값, int b=기본값, int c=기본값) { ....}과 같이 사용하고 이렇게 정의했다면 호출하는 쪽에서는func() // 사용가능func(1) // 사용가능func(1, 2) // 사용가능func(1, 2, 3) // 사용가능이렇게 어떤 방식으로든 사용이 가능하다 디폴트 매개변수의 사용 규칙은 보통 함수 선언부에만 기본값 지정한다.void func(int = 20, int = 30, int = 40); // 함수의 선언부 - 이쪽..
2025.04.18 -
Ch 09. 함수 - 05. 참조로 전달
기존에 우리가 만들었던 changer 함수를 보면이렇게 구현되어 있는데 여기서 보면 changer함수의 전달인자로는 &를 붙여 주소값을 보내야 되고 changer함수내부에서는 *연산자를 사용해서 값을 가져와 사용해야하는 것과 같이 한 두 가지의 depth를 생각해가면서 개발을 해야만 한다는 불편함이 있다. 이때 레퍼런스라는 것을 사용해서 이걸 해결해줄 수 있다. 1. 레퍼런스C++에서 레퍼런스(Reference)란 어떤 변수의 별명(alias) 또는 다른 이름이라고 볼 수 있는 개념이다이미 존재하는 메모리 공간을 새 이름으로 참조하게 되므로, 포인터처럼 별도로 주소를 저장하지 않고도 간접 참조가 가능하다.레퍼런스를 사용하면 코드의 안전성과 가독성이 높아지고, 특히 함수에서 인자 전달, 반환값 처리, 객체..
2025.04.18 -
Ch 09. 함수 - 04. 주소로 전달
이전에는 값을 함수에 전달인자로 전달했을 경우를 보았었고 그 경우에는 함수를 호출한 쪽에서 전달한 변수는 값만을 복사해서 전달하고 호출 된 함수 내부의 매개변수의 변수는 그 값을 통해 초기화 하고 내부에서 매개변수의 값이 변경되더라도 호출된 쪽의 전달 인자의 값을 바꾸진 않는다는 것을 보았었다. 이번엔 값을 전달하는게 아니라 주소를 전달하는 방법에 대해서 알아보자. 1. 함수에 변수의 주소값를 전달함수에 변수의 주소값을 전달하기 위해서는 포인터를 사용해야한다.이걸 그대로 사용해보자면 바꿔야 할 부분은 함수의 매개변수의 타입이다. [changer 함수부]이걸 둘다 포인터로 변경해주면받을 준비는 완료되었다.이제 내부의 로직도 포인터를 사용하는 방법으로 바꿔보자. [main함수부: 함수를 call하는 곳]이제..
2025.04.18