1. 변수(Variables)의 개념
C++의 변수는 메모리 위치에 부여된 이름이다. 그것은 프로그램의 기본 저장 단위기도 하다.
변수에 저장된 값은 프로그램 실행 중에 변경될 수 있다. 변수는 메모리 위치에 지정된 이름일 뿐이다. 또한, C++에서는 사용 전에 모든 변수를 선언해야 한다.
2. 변수 선언
일반적인 변수 선언의 형태는 다음과 같다.
// Declaring a single variable
type variable_name;
// Declaring multiple variables:
type variable1_name, variable2_name, variable3_name;
변수 이름은 알파벳(대소문자, 소문자 모두), 숫자 및 밑줄(_) 문자로 구성될 수 있다. 그러나 그 이름은 숫자로 시작해서는 아니 된다.
위 그림에서
데이터 타입(data type): 이 변수에 저장할 수 있는 데이터 유형이다.
변수의 이름(variable name): 변수에 지정된 이름이다.
값(value): 변수에 저장된 초기값이다.
예시:
// Declaring float variable
float simpleInterest;
// Declaring integer variable
int time, speed;
// Declaring character variable
char var;
물론, 다음과 같이 변수를 선언하면서 값을 제공할 수도 있다.
int a=50,b=100; //declaring 2 variable of integer type
float f=50.8; //declaring 1 variable of float type
char c='Z'; //declaring 1 variable of char type
3. 변수 선언의 규칙
① 변수 이름에는 문자, 숫자, 밑줄이 포함된다.
② 변수의 이름은 대소문자를 구분한다. (따라서 Guti와 guti는 다른 변수이다.)
③ 변수 이름에는 공백 및 특수 문자(ex #,$%,* 등)가 포함되지 않는다.
④ 모든 변수 이름은 알파벳 문자 또는 밑줄(_)로 시작해야 한다.
⑤ 변수명으로 C++키워드(ex float, double, class)를 사용할 수 없다.
※ 변수 선언과 정의의 차이
변수 선언은 변수가 처음 사용되기 전에 먼저 선언되거나 도입되는 부분을 말한다. 그에 반해, 변수 정의는 변수에 메모리 위치와 값이 할당되는 부분이다. 변수 선언과 정의는 대부분 함께 수행된다.
예시:
// C++ program to show difference between
// definition and declaration of a
// variable
#include <iostream>
using namespace std;
int main()
{
// this is declaration of variable a
int a;
// this is initialisation of a
a = 10;
// this is definition = declaration + initialisation
int b = 20;
// declaration and definition
// of variable 'a123'
char a123 = 'a';
// This is also both declaration and definition
// as 'c' is allocated memory and
// assigned some garbage value.
float c;
// multiple declarations and definitions
int _c, _d45, e;
// Let us print a variable
cout << a123 << endl;
return 0;
}
출력:
a
시간 복잡도: O(1)
공간 복잡도: O(1)
4. 변수의 유형
C++의 변수 범위를 기준으로 세 가지 유형의 변수가 존재한다.
① 지역 변수 ② 인스턴스 변수 ③ 정적 변수
① 지역 변수
블록 또는 메서드 또는 생성자 내에 정의된 변수를 지역(로컬) 변수라고 한다.
이러한 변수는 블록에 입력하거나 블록에서 나온 후 함수가 호출되어 파괴되거나 함수에서 호출이 돌아올 때 생성된다.
이러한 변수의 범위는 변수가 선언된 블록 내에만 존재한다. 즉, 해당 블록 내에서만 이 변수에 액세스할 수 있는 것이다.
지역 변수의 초기화는 필수 사항이다.
② 인스턴스 변수
인스턴스 변수는 non-static 변수로, 메서드, 생성자 또는 블록 외부의 클래스에 선언된다.
인스턴스 변수가 클래스에 선언되면 해당 클래스의 개체가 생성되고 개체가 파괴되면 이러한 변수가 생성된다.
지역 변수와 달리, 인스턴스 변수에 액세스 지정자를 사용할 수 있다. 액세스 지정자를 지정하지 않으면 기본 액세스 지정자가 사용된다.
지역 변수와 달리, 인스턴스 변수의 초기화는 필수 사항이 아니다. 인스턴스 변수는 개체를 생성해야만 액세스할 수 있다.
③ 정적 변수
정적 변수는 클래스 변수라고도 한다. 이러한 변수는 인스턴스 변수와 유사하게 선언되며, 차이점은 정적 변수가 메서드 생성자 또는 블록 외부의 클래스 내에서 static 키워드를 사용하여 선언된다는 것이다.
인스턴스 변수와 달리, 생성하는 개체 수에 관계없이 클래스당 정적 변수 복사본을 하나만 가질 수 있다.
정적 변수는 프로그램 실행 시작 시 생성되고, 실행이 종료되면 자동으로 파괴된다.
정적 변수의 초기화는 필수 사항이 아니고, 기본값은 0이다.
만약 우리가 (객체를 통해) 인스턴스 변수와 같은 정적 변수에 접근한다면, 컴파일러는 경고 메시지를 보여줄 것이고, 프로그램을 중단하지 않을 것이다. 컴파일러는 자동으로 객체 이름을 클래스 이름으로 바꾼다.
클래스 이름 없이 정적 변수에 액세스하면 컴파일러가 자동으로 클래스 이름을 추가할 것이다.
'C++' 카테고리의 다른 글
C++ 정적 키워드 총정리 (0) | 2024.02.20 |
---|---|
C++ 변수(Variables)의 범위- 지역, 전역 총정리 (0) | 2024.02.17 |
C++ 상수(Constants) 총정리 (1) | 2024.02.16 |
C++ 키워드(Keywords) 총정리 (1) | 2024.02.16 |
C++ 식별자(Identifiers) 총정리 (0) | 2024.02.15 |