전체 글(112)
-
C++의 포인터 배열에 대해서
1. 포인터 배열포인터 배열이란 포인터들을 원소로 가지는 배열을 말한다.타입* 배열이름[크기];실 사용 예시는 아래와 같고int* arr[3]; // int* 타입의 요소를 3개 갖는 배열그 형태는int n1 = 10;int * ptr1 = &n1;int n2 = 20;int * ptr2 = &n2;int n3 = 30;int * ptr3 = &n3;int* ptrArr [3] = {ptr1, ptr2, ptr3};--------------------------------------------------- [ ptrArr ] │ │ ▼[ ptrArr[0] ] [ ptrArr[1] ] [ ptrArr[2] ] [ ptr1 ] [ ptr2 ] ..
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 -
Ch 09. 함수 - 03. 값으로 전달
우선 내용을 보기전에 하나의 경우를 보자. 이 changer 함수는 int 값 2개를 전달 받아 값을 서로 바꿔주는 함수이다. 이를 main함수로 호출해보자값이 바뀌지 않았음을 알 수 있다.왜 값이 바뀌지 않을까? 함수의 전달인자로 값을 전달이전에 scope에 따라서 값에 접근을 할 수 있는지 할 수 없는지에 대해서도 이야기 했었었다.보면 main이라는 함수와 changer라는 함수는 각각의 별개의 scope를 가지고 있는데main이란 함수에서 changer를 호출할때 a와 b를 전달해줬는데 이는 사실 a, b 자체를 직접 전달한게 아니라 a와 b의 값을 전달해주는 것으로 사실상이것과 동일하다고 생각하면 된다. 과정을 조금 상세하게 보자면 먼저 main함수가 실행되면서 지역변수인 두 변수가 스택에 올라..
2025.04.18