전체 글 282

main 함수의 머리

함수의 머리는 인터페이스 역할을 한다. main 함수의 정의는 함수의 머리 int main()로부터 시작한다. 일반적으로 함수는 다른 함수에 의해 호출이 된다. 이때 함수 머리는 호출 함수와 피호출 함수의 인터페이스를 나타낸다. 함수 이림의 앞부분을 함수 리턴형(function return type)이라고 한다. 이것은 피호출 함수가 호출 함수로 다시 넘겨주는 정보의 흐름을 나타낸다. 이러한 일반 규칙이 main() 함수에서는 다소 혼동이 된다. 그 이유는 프로그램의 어디에도 main() 함수를 호출하는 부분이 없기 때문이다. 일반적으로 main()은, 프로그램과 운영 체제 (Unix, Windows 7,Linux 또는 다른 어떤 것)을 중개하기 위해 컴파일러가 프로그램에 추가하는 시동 코드에 의해 호출..

인라인 함수

inline 함수라는 이름의 의미는 in은 내부, line은 프로그램 코드라인을 의미한다. 프로그램 코드라인 안으로 들어가 버린 함수라는 뜻으로 일반적인 함수에 비해서 실행속도의 이점이 있다. 이유는 함수의 호출 방식에 대한 차이 때문이다. 일반 함수를 호출하는 경우 메모리에 일반 함수의 코드를 저장하고, 함수를 호출했을 때 해당 함수의 주소로 점프하여 해당 함수의 코드를 실행하고 다시 원래 자리로 돌아와야 한다. 그에 반해 인라인 함수는 함수 호출 코드에 직접 인라인 함수의 코드가 치환되어 실행되기 때문에 주소영역 점프가 필요하지 않아 함수의 실행속도가 더 빠른 것이다. 이를 함수 호출의 프로그램 내부 구조로 풀어보면 일반적인 함수는 작성한 코드 프로그램을 실행 -> 명령들을 컴퓨터 메모리에 로드 ->..

C++ 기초 플러스 단원 정리

제1장 C++ 첫걸음 1장에서는 C 언어의 객체 지향 프로그래밍 기법을 추가하여 C++ 프로그래밍 언어를 만들게 된 역사적인 과정을 알아본다. 여기서는 C와 같은 절차적 언어와 C++와 같은 객체 지향 언어의 차이를 설명하며, C++ 표준을 개발히기 위한 ANSI/ISO의 협력에 대하여 설명, C++ 프로그램을 작성하는 방법을 설명, 현재 시점에서 사용할 수 있는 여러가지 C++ 컴파일러들에 대하여 요약하며, 마지막으로 이 책에서 사용된 표기법을 설명한다. 제2장 C++ 시작하기 2장에서는 C++ 프로그램을 작성하는 과정을 알아본다. main () 함수의 역할과 C++ 프로그램이 사용하는 몇 가지 구문들에 대해 배운다. 프로그램의 입출력을 위해 미리 정의되어 있는 cout과 cin 객체를 사용해 보그 변..

전처리 지시자

전처리 지시자는 왜 사용해야 하는가? 프로그램은 컴파일 환경을 바꾸거나 여러 개의 모듈로 나누어 작성할 때 이식성과 호환성을 고려해야 한다. 때문에 컴파일하기 전에 컴파일 환경에 맞게 소스 코드를 편집할 수 있는 기능이 필요한데, 그 기능을 담당하는 것이 전처리 지시자이다. 전처리 지시자의 종류 파일을 포함하는 #include 매크로명을 만드는 #define #define을 사용한 매크로 함수 매크로 연산자 #과 ## 조건부 컴파일 지시자 #pragma 지시자 +PUSE 분할 컴파일 1. 파일을 포함하는 #include #include 는 지정한 파일의 내요을 읽어와 지시자가 있는 위치에 붙여놓는다.[솔루션 탐색기] - [해더 파일]에서 마우스를 우클릭 한 다음 [추가] - [새 항목] 을 선택하여, [..

동적 할당 함수

프로그램에 필요한 메모리 저장 공간(이하 저장 공간)은 프로그램을 저장할 때 변수나 배열을 선언을 통해 확보한다고 배웠다. 그런데 언제나 시작부터 변수나 배열 선언을 해서 저장 공간을 확보할 수 있는 건 아니다. 때로는 프로그램 실행 중에 저장 공간을 할당할 수도 있다. 이렇게 사용한 저장 공간은 다시 실행 중에 재활용을 위해 반납해야 한다. 이렇게 프로그램 실행 중에 저장 공간을 할당하는 것을 동적할당이라 한다. 동작 할당 되는 메모리는 힙 영역에 생성되며 컴파일 타임에 메모리의 크기가 결정되는 데이터 영역이나 스택 영역의 정적 메모리 할당과는 대조적인 개념이다. int num;

c++ 함수의 특질

함수의 오버로딩 (Function Overloading) 함수의 오버로딩이란? c언어에서는 허용하지 않았던, 기능이다. 같은 이름이라고 하더라도 매개 변수의 자료형 또는 개수 혹은 함수의 자료형이 다르면 함수 생성이 가능하다. 함수의 디폴트 값 설정 int YourFunc (int num1, int num2, int num3) { . . . } 예시 1번과 같은 함수가 있다고 가정해 보자, 그럼 다음과 같이 일부분만 디폴트 값을 지정 할 수도 있고, 전부 디폴트 값을 지정할 수 있다. int YourFunc (int num1, int num2 = 1, int num3 = 3) { . . . } int YourFunc (int num1 = 3, int num2 = 1, int num3 = 3) { . . ..

함수

함수란? 매개변수란? 함수를 정의할 때 사용되는 변수를 의미한다. 인수란? 함수가 호출될 때 실제로 담기는 값이다. 함수의 호출 방식 call by value ( = 값에 의한 호출) 함수가 호출될 때 메모리 공간 안에서는 함수를 위한 별도의 임시 공간이 생성된다. 함수에서 값을 복사해서 전달하는 방식으로, 인수로 전달되는 변수를 함수의 매개변수에 복사한다. 이렇게 복사되면 인자로 전달한 변수와는 별개의 변수가 되며, 매개변수를 변경해도 원래의 변수에는 영향을 미치지 않는다. 따라서 원본 값을 바꿀 필요가 없는 경우에 call by value 방식을 이용하면 된다. call ba address ( = 주소에 의한 넘김)

포인터

포인터는 ' * ' 연산자를 쓴다 ' * ' 연산자는 간접 연산자라고도 불리며, 역참조 연산자라고도 불린다. 포인터는 데이터가 저장된 주소값을 가리킨다. 그리고 이 주소로 해당 주소의 값에 접근하여, 값을 변환하거나 동적할당을 할 때 쓴다. int *pa; 예시에서 int는 주소를 구한 변수의 형태이고, *는 포인터의 기호, pa는 포인터의 이름이다. 포인터의 변수가 선언되면 일반 변수와 마찬가지로 메모리에 저장 공간이 할당되며, 그 이후에 변수명으로 사용 가능하다. pa = &a; 만약 변수 a가 메모리 100번지부터 103번지까지 할당되었다면 주소 값이 100이고 pa에 저장된다. 그렇게 되면 pa는 변수 a가 메모리 어디에 할당되었는지 그 위치를 기억하고 있게 된다. pa -> a 이러한 과정을 통..