본문 바로가기

C11

[ C++ ] Call-by-value , Call-by-reference 함수의 호출 형태는 크게 Call-by-value와 Call-by-reference로 나뉜다. Call-by-value * Pass-by-value 라고 불리기도 함. Call-by-value는 값에 의한 호출로, 함수의 인자로 넘기는 값을 복사해서 새로운 함수에 넘겨주는 방식이다. 즉, 값을 인자로 전달하는 함수의 호출 방식이다. 예로 들어 두 변수의 값을 바꿔주는 함수가 있다고 가정하자. void swap(int a, int b) { int temp = a; a = b; b = temp; } 겉으로 봤을 때는 a와 b 값을 바꾸는건 성공이다. 하지만 함수 외부에 선언된 변수 또한, 바뀌었을까? num1의 값은 a에 복사되고 num2의 값은 b에 복사되어 전달하기 때문에, num1과 num2의 값이 바.. 2019. 9. 5.
[ C++ ] const ( 상수 )의 활용 const 키워드와 함께 정의한 변수의 값은 수정이 불가능하다. 즉, 프로그래밍시에 바뀌어서는 안될값이 있을 경우 활용할 수 있다. 또한 코드가 길어질 경우 실수로 변수의 값이 바뀌어 지는것을 방지할 수 있다. const의 예는 다음과 같다. const int num = 10; -> "변수 num을 상수화" 그래서 num 값을 변경시에 컴파일 에러가 발생하는 것을 볼 수 있다. 그럼 포인터의 예를 살펴보자. const int *ptr1 = # -> "포인터 ptr1을 이용해서 num의 값을 변경 할 수 없음." 그래서 ptr1로 ptr1가 가리키고 있는 값을 변경할려고 할 때 컴파일 에러가 발생하는 것을 알 수 있다. 그러나 ptr1의 주소 값을 변경 할 수 있다. * num에 다이렉트로 접근하면.. 2019. 9. 5.
[ C++ ] 선행처리기 / 전처리기 ( Preprocess ) 다음 포스터인 inline에 들어가기 전에 C에서 배웠던 전처리기에 대해 복습하자. C++에서 컴파일되는 과정은 다음과 같습니다. "프로그래머가 작성한 소스파일은 가장 먼저 소스파일에 대한 처리를 하는 선행 처리기를 거치고, 컴파일되어 오브젝트 파일이 생성되고, 다시 링커에 의해 실행파일이 된다. " 즉, 전처리이자 선행 처리(Preprocess) 란? 실행 파일을 생성하는 과정에서 컴파일하기 전, 소스 파일 내에 존재하는 선행 처리 지시문을 처리하는 작업을 의미합니다. 또한, 선행 처리를 위한 명령에는#define,, #undef, #include, #if, #ifdef, #elif, #else 등 맨 앞에 #기호가 붙는다는 공통점이 있습니다. ( 선행처리를 위한 명령 = 전처리 문 = 전처리기 연산자.. 2019. 9. 5.