Computer Science/C || C++
(C++) 참조 변수
참조 변수 포인터를 선언할 때 * 기호를 이용하는 것은 낯설지가 않다. 참조 변수를 선언할 때는 &기호를 이용하여 선언을 해준다. #include int main() { using namespace std; int value = 3; int *ptr = &value; int &ref = value; cout
(C++) 열거형(enumerated types)
열거형이란? 열거형은 C++가 제공하는 기본 자료형이 아니라 프로그래머들이 따로 만든 사용자 정의 자료형이다. 열거형은 enum 을 통해 정의된다. enum Color { /* 여기부터는 열거자(enumerator)가 들어간다. 열거자는 세미콜론(;)이 아니라 쉼표(,)로 구분한다. */ COLOR_BLACK, COLOR_WHITE, COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_YELLOW, COLOR_SKYBLUE, }; // 열거형 정의시에는 반드시 블록뒤에 세미콜론(;)을 붙여줘야한다. //열거형 Color 사용 Color paint = COLOR_WHITE; Color school(COLOR_GREEN); Color banana { COLOR_YELLOW }; 위의 ..
전역변수 앞에서의 extern 과 static
1) 전역변수 앞에서의 extern 변수 다른 c 혹은 c++ 파일과의 링킹을 할 때 종종 사용되곤 한다. // main.c #include extern void f(); extern int g_value; int main(void) { printf("%d\n", g_value); return 0; } 위는 main.c 이다. // sub.c #include int g_value; void f() { g_value = 1; } 위는 sub.c 이다. 이와 같이 main.c에서 extern int g_value; 와 같이 선언을 해주었는데 sub.c 에서 즉 외부변수를 가져와 사용하겠다는 것이다. 이때 main.c 에서 extern int g_value; 라고 하지 않고 그냥 int g_value; 라고 ..
헤더가드의 필요성
이전에 c언어를 처음 배울 때 컴파일과 링킹 과정에 대해서는 배운 적이 있었는데 그때는 Visual Studio가 아니라 dev c++ 를 사용했었기에 헤더가드에 대해서 잘 몰랐었다. Visual Studio 에서는 헤더파일을 생성하면 자동으로 이렇게 헤더가드를 붙여준다. #pragma once는 함수의 중복 사용을 막아준다. 아래의 상황을 예시로 들어보자. int something(int a, int b) { return a + b ; } 위의 코드 블럭을 working1.h 라고 하고 #include "working1.h" int imworking() { return something(5, 6) + something(3, 5) ; } 위의 코드 블럭을 working2.h 라고 할 때 만약 소스 파일이..