C++/C++ 기초
[C++] 레퍼런스(참조자)
레퍼런스 C++에서 새로 등장한 기술로 특정 변수의 이름 대신 새로운 이름을 붙일 수 있다. 참조자라고 한다. &(앰퍼샌드) 기호를 이용한다. 레퍼런스를 이용하여 변수를 선언할 수 있으며 이를 참조형 변수라고 한다. 하나의 객체가 다른 객체를 연결하는 변수이며, 대입된 변수의 값과 주소를 그대로 가진다. 쉽게 말해서 다른 변수에 별명을 붙이는 변수라고 생각하자. 레퍼런스 변수 선언 레퍼런스 변수는 다음과 같이 선언한다. datatype &name = 변수명; int &p = a; Ex) 간단한 레퍼런스 변수 예제 #include using namespace std; int main() { int a = 10; int& p = a; cout
[C++] 매크로 / 인라인
매크로 컴파일러가 컴파일을 시작하기 전에 #define으로 정의된 상수를 매크로 확장 문자열로 변환하여 사용하는 것 프로그램의 가독성이 높아지고, 유지보수가 용이해진다. 매크로 확장 문자열에는 공백을 포함할 수 없다. #define은 전처리 과정에서 치환되므로 메모리 공간에 할당되지 않는다. ▶ 주소 접근이 불가능하다. 매크로 상수 매크로 상수는 다음과 같이 정의한다. #define 매크로이름 값 // 전처리기 문의 끝에는 ;(세미콜론)을 붙이지 않는다. 매크로 상수 예제 #include #define PI 3.14159 // 매크로 상수 정의 using namespace std; int main() { double radius = 5; cout
[C++] void 타입 / main 함수
void 타입 리턴값이 없는 타입 리턴값이 없는 함수 반환값이 굳이 필요없는 함수는 리턴값이 없는 타입인 void를 이용할 수 있다. Swap 함수 구현 #include using namespace std; void swap(int*, int*); int main() { int a = 3; int b = 7; cout
[C++] 변수 이해하기 (지역/전역/정적)
변수 변수(variable)란 데이터(data)를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간을 의미 지역 변수 함수 내부에서 생성되는 변수 스택(Stack)에 저장되며, 선언된 함수 내에서만 사용된다. 함수가 종료되면 해당 변수는 소멸한다. { } 중괄호를 기준으로 하나의 지역(지역변수가 생존하는 영역)을 구분한다. 지역 변수 예제 #include using namespace std; int change_num() { int a = 10; return 0; } int main() { int a = 0; change_num(); cout
[C++] 열거형(Enum)
열거형 명명된 상수의 집합 열거자 이름들은 일반적으로 해당 언어의 상수 역할을 하는 식별자이다. 자주 사용하는 변수를 상수 처리할 때 유용하게 사용된다. ▶ 색을 칠하는 프로그램에서 "red"를 0, "yellow"를 1, "green"을 2과 같이 대응하여 사용 열거형 생성하기 열거형 정의 enum 열거형이름 { 변수명1, 변수명2, 변수명3, ... }; enum { 변수명1, 변수명2, 변수명3, ... }; // 열거형 이름 생략 가능 변수명1, 2, 3은 차례대로 정수값 0, 1, 2에 매칭된다. 열거한 변수명은 컴파일러에 의해서 매칭된 정수값으로 변환된다. enum { 변수명1 = 3, 변수명2, 변수명3, ... }; 위와 같이 정의하면 0이 아닌 3부터 값이 매칭된다. 변수명1 = 3, 변..
[C++] 공용체(Union)
공용체 멤버 변수끼리 같은 메모리 공간을 공유하는 형태 공용체의 각 멤버들의 메모리 시작 주소는 모두 동일하다. ▶ 각 멤버 변수의 변화가 다른 멤버 변수에 영향을 줌 반면, 구조체는 멤버 변수가 각각 다른 메모리 공간을 할당 받음 그다지 사용빈도가 높지 않은 기능 공용체 구현 struct 대신 union을 적으면 된다. union 공용체이름 { /*멤버들*/ int age; string name; }; 공용체 구현 예제 #include #include using namespace std; union uni { int a; char b; }; int main() { union uni A; A.a = 0x12345678; // 16진수 cout
[C++] 구조체(Struct)
구조체 C/C++에서 구조화된 데이터를 처리할 때 사용 하나 이상의 변수(같거나 다른 데이터형을 갖는)를 묶어 새로운 자료형을 정의하는 도구 원시 자료형(int, float 등) 외에 새로운 데이터 타입을 직접 정의할 수 있게 함 C++에서는 기본 접근 제어자가 다른 것 말고는 클래스와 동일하다. (구조체-public, 클래스-private) 구조체 생성 구조체 정의 구조체는 다음과 같이 정의한다. 구조체를 정의할 때는 멤버 변수를 초기화할 수 없다. // 정의 방법 1: 구조체만 정의 struct 구조체이름 { /*멤버들*/ int age; string name; }; // 마지막에 무조건 ;(세미콜론) 붙여야 함 // 정의 방법 2: 구조체와 함께 구조체 변수를 정의 struct 구조체이름 { /*멤..
[C++] typedef
typedef typedef는 C, C++의 예약어이며 저장소 클래스 지정자 중 하나이다. 구조체(struct)와 union 타입으로 이루어진 복잡한 자료구조를 선언하는 문을 단순하게 만들기 위해 종종 사용되지만, 다양한 길이의 정수 자료형에 대한 특정한 서술형 이름을 지정하는 것으로 일반화되어 있다. 형식을 정의 ▶ 기존의 다양한 자료형에 대한 단순한 이름(별명)을 할당하기 위한 구조를 제공 구조체 변수의 명을 간단히 만들 수 있는 C++에서는 잘 쓰이지 않는 예약어 typedef 사용하기 typedef를 만드는 문법은 다음과 같다. (ex. int를 new_name으로 변경) // typedef 재정의할 자료형 재정의할 이름 typedef int new_name; int 형을 Int32로 이름 바꾸기..