코딩/C와 C++

[C++ 기초 강좌] 2. C++ 변수 정의하기

드리프트 2021. 3. 11. 17:57
728x170

 

 

이제, 우리의 첫 번째 프로그램을 벗어나서 어떤 의미 있는 정보를 처리하고, 그것에 대한 해답을 우리는 얻고자 한다. 이러한 과정에서의 중요한 요소는 우리가 필요할 때 언제든지 호출할 수 있는 메모리의 한 부분을 사용하는 것이다. 우리는 그 메모리의 한 부분을 의미 있는 이름을 사용하여 참조하고, 데이터의 한 항목을 저장할 수 있는 것이다. 그러한 각 메모리 조각을 변수라고 부른다.

각 변수는 그것이 프로그램 안에서 정의될 때 그것에게 할당된 특정한 종류의 데이터를 저장한다. 하나의 변수는 정수를 저장할 수 있다. 그러한 경우, 그 변수는 실수를 저장하는 데 사용될 수 없다. 어느 한순간에 각 변수가 포함하는 값은 프로그램 안에 있는 지시 사항에 따라 다르다. 그리고 물론, 그 값은 프로그램의 계산이 진행됨에 따라서 여러 번 바뀌게 된다.
먼저, 우리가 변수를 프로그램에서 사용할 때 그것의 이름을 정하는 규칙에 대해서 알아본다.

 

변수의 이름 정하기

우리가 변수에 부여하는 이름은 식별자, 또는 좀 더 편리하게 변수 이름이라고 불린다. 변수 이름은 A~z 문자(대소문자 모두), 0~9의 숫자, 그리고 밑줄 문자(_)를 포함할 수 있다. 그 외의 다른 모든 문자는 사용하면 안 된다. 변수 이름은 문자 또는 밑줄 문자로 시작되어야 한다. 보통, 이름은 저장될 정보의 종류를 나타내는 것으로 정해진다.

보통 컴파일러에서는 변수 이름은 255자 까지 가질 수 있기 때문에 여러분이 여유 있게 변수 이름을 정할 수 있다. 사실, 변수 외에도 C++에서 이름을 가지는 항목들은 상당히 많이 있다. 그것들도 255자까지의 이름을 가지며, 변수의 이름 규칙과 동일한 이름 규칙이 적용된다. 최대 길이의 이름을 사용하게 되면 여러분의 프로그램이 읽기 어렵게 되고, 여러분이 엄청난 속도의 키보드 타이핑 실력을 가지지 않는 한 그 이름을 입력하기도 어렵다. 좀 더 심각한 상황은 모든 컴파일러가 그렇게 긴 이름을 지원하는 것은 아니라는 것이다. 만약 여러분이 코드를 다른 환경에서도 컴파일해야 한다면 일반적으로 이름을 31자까지만 정하는 것이 적당하며, 대부분의 경우에 그렇게 하는 것이 문제를 발생시키지 않는다.

비록 여러분이 밑줄 문자로 시작하는 변수 이름을 사용할 수 있지만(예를 들어, _this와 _that), 동일한 형태를 가지는 표준 시스템 변수들과 충돌될 소지가 있기 때문에 이것은 피하는 것이 좋다. 또한, 그와 같은 이유에서 여러분은 두 개의 밑줄 문자로 시작하는 이름도 사용하지 않는 것이 좋다.

좋은 변수 이름의 예는 다음과 같다.

Price
Discount
pShape
Value_
COUNT


8_Ball, 7Up, 그리고 6_pack은 잘못된 변수이다. Hash! 또는 Mary-Ann도 그렇다. 이 마지막 예는 여러분이 일반적으로 저지르는 실수이다. Mary_Ann이 정확한 이름이다. 물론, Mary Ann도 잘못된 이름이다. 왜냐하면, 변수 이름 안에 빈칸을 사용할 수 없기 때문이다. Republican과 Republican은 서로 다른 이름이다. 대문자와 소문자가 서로 구별되기 때문이다.

C++에서 종종 사용되는 규칙으로서 클래스의 이름을 정할 때는 이름을 대문자로 시작한다. 클래스에 대해서는 다음에 다룰 예정이다.

 

C++의 키워드

C++ 에는 키워드(keyword)라는 예약어가 있다. 이것은 언어에서 특별히 중요한 의미를 가진다. 여러분이 프로그램을 입력할 때 그것들은 비주얼 C++ 편집기에 의해서 특별한 색깔로 강조된다. 만약 여러분이 입력하고 있는 키워드가 강조되지 않는다면 그 키워드는 부정확하게 입력된 것이다.


C++ 언어의 다른 요소들과 마찬가지로, 키워드도 대소문자의 구별이 있다.

예를 들어, 여러분이 이 장의 앞부분에서 입력한 프로그램은 int와 return이라는 키워드를 포함하고 있다. 여러분이 이 책을 읽어나가면서 다 많은 키워드를 보게 될 것이다. 이때 여러분이 프로그램 안에 있는 어떤 엔티티(변수와 같은)에 대한 이름을 선택할 때 C++에 있는 키워드와 동일한 이름을 사용하지 않았는가를 확인해야 한다.

 

변수 선언하기

변수 선언이라는 것은 변수의 이름과 그 변수가 저장할 수 있는 데이터의 종류를 지정하는 하나의 프로그램 문장이다. 예를 들어, 다음과 같은 문장

int value;


은 정수를 저장할 수 있는 value라는 이름의 변수를 선언한다. value라는 이름의 변수에 저장될 수 있는 데이터의 형식은 키워드인 int에 의해서 지정된다. Int는 하나의 키워드이기 때문에 여러분은 int를 변수 이름으로 사용할 수 없다.
선언문은 항상 세미콜론으로 끝나야 한다.


하나의 선언문은 여러 개의 변수의 이름을 지정할 수 있으나, 우리가 이미 알아보았듯이 일반적으로 한 줄에 하나씩 개별적인 문장에서 변수를 선언하는 것이 좋다. 우리는 이 책에서 때로는 이러한 규칙에서 벗어날 것이지만, 그것은 단지 페이지를 절약하기 위한 한 방편일 따름이다.


변수 이름 그 자체만으로는 어떤 것도 저장할 수 없다. 그러므로 그것만으로는 사용되지 않는다. 데이터를 저장하려면(예를 들어, 정수 값) 컴퓨터 메모리의 한 부분을 변수에 할당해야 한다. 이러한 작업을 변수 정의라고 한다.


C++에서 변수 선언은 변수 정의와 동시에 이루어진다.(특별한 경우는 제외한다. 그러한 경우에 대해서는 나중에 알게 된다.) 하나의 문장에서 우리는 변수 이름을 나타내고, 적당한 크기의 메모리를 그것에게 할당한다. 그러므로 다음과 같은 문장

int value;


은 선언과 정의를 동시에 하고 있다. 우리가 선언했던 변수 이름인 value를 사용하여 우리가 정의했던 컴퓨터 메모리의 한 조작을 액세스 하게 되는 것이다.

우리는 이름을 프로그램에게 처음으로 소개할 때 ‘선언’이라는 용어를 사용하였다. 그때 그 이름이 어떤 작업에 사용될 것인지에 대한 정보도 함께 제공된다. ‘정의’라는 용어는 컴퓨터 메모리를 그 이름에게 할당하는 것을 뜻한다. 변수의 경우, 위의 코드에서 처럼 하나의 문장에서 선언하고 정의할 수 있다.

여러분은 변수 선언을 프로그램의 시작하는 부분과 그 변수가 처음으로 사용되는 곳 사이에서 해야 한다. C++에서는 변수가 처음으로 사용되는 곳 근처에서 변수를 선언하는 것이 좋다.

 

변수의 초기값

변수를 선언할 때 그 변수의 초기값을 할당할 수도 있다. 초기값을 변수에게 할당하는 변수 선언을 초기화(initialization)라고 한다. 변수를 선언할 때 그것을 초기화하려면 변수 이름 뒤에 = 기호를 쓰고, 그 뒤에 초기값을 쓰면 된다. 다음은 각각의 변수에게 초기값을 할당하는 문장이다.

int value = 0;
int count = 10;
int number = 5;


이 경우, value는 0을, count는 10을, 그리고 number은 5를 가진다.

C++에서 변수에 대한 초기값을 할당하는 다른 방법이 있는데, 그것을 함수 표기법이라고 한다. = 기호와 값을 쓰는 대신에 여러분은 단지 그 값을 변수 이름 다음에 나오는 괄호 안에 적기만 하면 된다. 그러므로 우리는 위의 코드를 다음과 같이 쓸 수 있다.

int value(0);
int count(10);
int number(5);


만약 여러분이 변수에 대한 초기값을 지정하지 않는다면 그 변수는 보통 여러분이 이전에 실행시켰던 프로그램에 의해서 점유되었던 메모리에 남아있는 쓰레기값을 가지게 된다(그러나 예외도 있는데, 이것에 대해서는 나중에 살펴볼 것이다). 

 

가능하면 언제나 변수를 선언할 때 초기값도 같이 할당해야 한다. 만약 여러분의 변수가 알려져 있는 값으로 시작한다면 작업이 잘못되었을 때 그것을 해결하기가 더 쉬워질 것이다. 그리고 작업이 잘못 진행될 것이라는 것도 내다볼 수 있는 것이다.

 

 

 

그리드형