1. 변수의 종류
1) 지역 변수 (Local Variable)
#include <iostream>
void myFunction() {
int localVar = 10; // 지역 변수
std::cout << "Local Variable: " << localVar << std::endl;
}
int main() {
myFunction();
// std::cout << localVar; // 오류: localVar는 myFunction 밖에서 접근 불가
return 0;
}
- 함수나 블록 내에서 선언되는 변수로, 해당 블록 안에서만 유효합니다.
- 함수가 종료되거나 블록이 끝나면 메모리에서 소멸됩니다.
2) 전역 변수 (Global Variable)
#include <iostream>
int globalVar = 20; // 전역 변수
void myFunction() {
std::cout << "Global Variable in Function: " << globalVar << std::endl;
}
int main() {
std::cout << "Global Variable in Main: " << globalVar << std::endl;
myFunction();
return 0;
}
- 함수나 클래스 외부에서 선언된 변수로, 프로그램 전체에서 접근할 수 있습니다.
- 전역 변수를 사용할 때는 주의가 필요하며, 코드의 복잡성을 줄이기 위해 지양하는 것이 좋습니다.
- 프로그램이 종료될때까지 메모리에 남아 있습니다.
3) 정적 변수 (Static Variable)
#include <iostream>
void myFunction() {
static int staticVar = 0; // 정적 변수
staticVar++;
std::cout << "Static Variable: " << staticVar << std::endl;
}
int main() {
myFunction(); // 1 출력
myFunction(); // 2 출력 (값 유지)
myFunction(); // 3 출력 (값 유지)
return 0;
}
- static 키워드를 사용하여 선언된 변수입니다.
- 함수 내에서 선언된 정적 변수는 함수가 호출될 때 초기화되며, 함수가 끝나도 소멸되지 않고 값을 유지합니다.
- 클래스 내에서 선언된 정적 변수는 해당 클래스의 모든 객체가 공유하는 변수로, 클래스가 메모리에서 해제될 때까지 존재합니다.
4) 외부 변수 (Extern Variable)
// file1.cpp
#include <iostream>
extern int sharedVar; // 외부 변수
void printSharedVar() {
std::cout << "Shared Variable: " << sharedVar << std::endl;
}
// file2.cpp
#include <iostream>
int sharedVar = 100; // 전역 변수로 선언
int main() {
printSharedVar(); // file1.cpp에 있는 함수 사용
return 0;
}
- extern 키워드를 사용하여 다른 파일에 정의된 변수를 참조할 수 있습니다.
- 주로 여러 소스 파일에서 같은 변수를 공유하고 싶을 때 사용됩니다.
5) 상수 (Constant)
#include <iostream>
const double PI = 3.14159; // 상수
int main() {
std::cout << "PI: " << PI << std::endl;
// PI = 3.14; // 오류: 상수는 값 변경 불가
return 0;
}
- const 키워드를 사용하여 값을 변경할 수 없는 변수를 선언할 수 있습니다.
- 프로그램 실행 중에 변하지 않는 값을 나타내며, 코드의 안전성을 높이는 데 도움을 줍니다.
6) 참조 변수 (Reference Variable)
#include <iostream>
int main() {
int original = 30;
int &ref = original; // 참조 변수
ref = 50; // 원본 변수 값을 참조 변수를 통해 수정
std::cout << "Original: " << original << std::endl;
std::cout << "Reference: " << ref << std::endl;
return 0;
}
- 기존 변수의 별칭(alias)로 사용되는 변수로, & 연산자를 사용해 선언합니다.
- 원본 변수와 메모리 주소를 공유하며, 값이 변경되면 원본 변수에도 반영됩니다.
7) 동적 변수 (Dynamic Variable)
#include <iostream>
int main() {
int *dynamicVar = new int(10); // 동적 변수 생성
std::cout << "Dynamic Variable: " << *dynamicVar << std::endl;
delete dynamicVar; // 동적 메모리 해제
return 0;
}
- 동적 할당(new, delete)을 통해 런타임에 메모리를 할당하는 변수입니다.
- 주로 포인터와 함께 사용되며, 메모리 관리가 필요합니다.
반응형