본문 바로가기
반응형

C++/함수8

[C++] 함수의 인자로 배열을 입력하는 법 배열의 이름에는 배열의 주소가 저장되어 있습니다. 더 정확이 말하면 배열 첫 원소의 주소 입니다. 따라서 배열 이름은 포인터입니다. 함수에서 배열을 입력받으려면 매개변수를 포인터형으로 선언하면 됩니다. 배열의 이름을 입력하면, 배열의 첫번째 원소를 반환하는 함수는 아래와 같습니다. int my_fun(int* arr) { return arr[0]; } int* arr 을 보면 매개변수를 포인터형 변수로 선언한 것을 알 수 있습니다. 실제로 함수를 사용해봅시다. #include using namespace std; int my_fun(int* arr) { return arr[0]; } int main() { int arr[3]={10,20,30}; printf("%d",my_fun(arr)); } //출력.. 2022. 8. 16.
[C++] 함수의 인자전달 방식 함수의 인자전달 방식을 이해하기 위해 문제를 하나 풀어봅시다. 아래 코드의 출력 결과는 얼마일까요? #include using namespace std; void my_fun(int arg1) { int* B=&arg1; *B=3; } int main() { int A=5; my_fun(A); printf("%d",A); } 출력 결과는 얼마일까요? 5입니다. arg1 자리에 A가 입력될 때, A라는 변수의 값만 복사되어 입력됩니다. arg1=5 가 되는 것입니다. B는 arg1의 포인터이므로 *B에 3을 입력하면 agr1이 3으로 수정될 뿐이지 A가 바뀌지는 않습니다. 2022. 8. 16.
[C++] 함수의 값으로 주소를 입력받는 방법 함수에 입력값으로 변수이름을 입력하고 연산을 수행하여도 변수 자체의 값을 바꿀 수는 없습니다. 변수로 부터 값만 전달 받고, 전달받은 값을 이용하여 연산을 하기 때문입니다. 그러나 함수의 입력값으로 변수이름이 아니라 주소를 입력받으면, 함수에서 변수에 직접 접근이 가능해집니다. 먼저 함수 입력값으로 변수 이름을 입력받는 예시를 봅시다. #include using namespace std; int my_fun(int var1) { return var1=var-1; } int main() { int A=5; printf("%d \n",my_fun(A)); printf("%d",A); return 0; } //결과 //4 //5 함수에서 1을 빼는 연산을 수행해도 A값 자체가 바뀌지는 않습니다. 함수를 통해 .. 2022. 8. 16.
[C++] 함수선언을 하면 좋은 이유 함수의 선언은 코드 앞부분에서 컴파일러에게 '나는 이런 함수들을 사용할것이다' 라고 알려주는 것입니다. 코드 앞부분에 함수를 선언하지 않고도 얼마든지 코딩을 할 수 있지만 함수의 정의 순서를 고려해야 하는 번거로움이 있습니다. 예를 들어 A라는 함수를 정의하고 B라는 함수를 정의했다고 합시다. 이때 A라는 함수 안에 B라는 함수를 사용할 수가 없습니다. B가 A보다 뒤에 정의 되었기 때문입니다. 이를 해결하려면 A와 B의 자리를 바꿔야합니다. 함수의 선언은 이러한 번거로움을 해결해줍니다. 함수의 선언 방법을 예시를 통해 알아봅시다. 두 수를 더한 값을 출력해주는 함수와 두 수를 곱한값을 출력해주는 함수를 선언하고 main 함수에서 사용하는 예시입니다. #include using namespace std;.. 2022. 8. 16.
[C++] 함수란 무엇인가 함수란? 함수는 입력값들에 대해 어떤 작업을 수행하고 결과값을 반환하는 기능을 하는 것을 말합니다. 입력값 -> 처리 -> 출력값 함수는 반복되는 작업을 편하게 만들어 줄 수 있고 코드를 기능에 따라 여러 부분으로 나눌 수 있게 해줍니다. C++ 소스파일의 기본 구성도 메인함수입니다. main 함수 안에 모든 내용을 다 넣게 되면 코드가 너무 복잡해집니다. 따라서 main 함수 밖에 여러 함수를 정의하여 기능을 나눕니다. 이 함수들을 main 함수에서 적절히 호출하여 사용합니다. C++ 을 함수의 모음이라고 할 수도 있습니다. main 함수와 main 함수 안에서 호출된 다양한 함수들이 C++ 코드를 구성합니다. 함수 선언해보기 C++에서 함수는 아래와 같이 선언합니다. 반환형 함수이름(매개변수1,매개변.. 2022. 8. 12.
[C++] 함수 매개변수의 디폴트값 C++에서는 함수를 정의할 때 디폴트값 설정이 가능합니다. 아래 예시를 봅시다. MyFun(int A=5) 와 같이 매개변수에 기본값이 입력되어 있습니다. #include int MyFun(int A=5) { return A+2; } int main() { std::cout 2022. 8. 8.
[C++] 함수 오버로딩이란 무엇인가 함수 오버로딩이란 매개변수의 자료형 또는 개수가 다를 경우 같은 이름으로 여러 함수 정의를 허용하는 것을 말합니다. 아래와 같이 동일한 이름의 두 함수를 허용하는 것입니다. MyFun 이라는 이름의 두 함수가 정의되어 있습니다. 인자 개수가 다릅니다. #include int MyFun(int A) { return A+2; } int MyFun(int A, int B) { return A+B; } int main() { std::cout 2022. 8. 8.
[C++] 인라인 함수와 일반함수는 무엇이 다른가 인라인함수의 동작은 매크로함수와 같기 때문에 먼저 매크로 함수와 일반함수의 차이를 간단히 설명하겠습니다. 매크로함수 vs 일반함수 C++로 코딩을 하고 실행파일을 만든는 과정을 생각해봅시다. 아래와 같은 단계를 거쳐서 실행파일인 exe 파일이 만들어집니다. 코드 → 선행처리기 → 컴파일러 → 링커 → 실행파일 선행처리기에서 하는 일은 매크로를 치환하는 것입니다. #define A 5 라고 선언되어 있다면 코드 안의 A들을 5로 치환하는 일을 선행처리기가 합니다. 매크로 함수도 선행처리기에서 치환됩니다. 따라서 선행처리기를 거치고 나면 매크로함수는 더이상 없습니다. 매크로로 정의된 수식이 이미 코드에 몸체로 삽입되어 있습니다. 반면 일반함수는 프로그램을 실행한 뒤에도, 해당 함수를 사용할 때마다 호출을 해.. 2022. 7. 28.
반응형