정적 변수
- static : 지역변수를 정적변수로 바꿈
- 선언된 블록이 끝나더라도 값을 유지
#include <iostream>
using namespace std;
void func() {
int a = 10;
static int b = 10;
a++;
b++;
cout << "a : " << a << ", b: " << b << endl;
}
int main() {
func();
func();
func();
func();
return 0;
}
상수 변수
- const : 변하지 않는 값
- const int *ptr = &a; : 포인터 변수가 가리키는 값을 상수화
- int *const ptr = &a; : 포인터 변수 자체를 상수화
#include <iostream>
using namespace std;
int main(){
int a = 0;
const int *ptr = &a;
a = 1;
*ptr = 2;
return 0;
}
레퍼런스 변수
- 변수에 또 다른 이름, 별칭(별명)을 부여
- 변수 이름 앞에 & 기호로 선언
자료형 &레퍼런스_변수_이름 = 대상_변수_이름;
- 반드시!!
- 참조할 원본 변수를 지정
- 참조할 대상이 지정된 레퍼런스 변수는 다른 변수를 참조하도록 변경할 수 없음 -> 한번 초기화 한 후 다른 값을 넣으면 값이 변경되는 형식
- 상수(리터럴)를 참조할 수 없다.
#include <iostream>
using namespace std;
void swap(int &a, int &b){
int temp = a;
a = b;
b = temp;
}
int main(){
int a - 5, b - 10;
swap(a, b);
return 0;
}
#include <iostream>
using namespace std;
int main(){
int a = 10;
int &ref = a; # ref = value
int b = 20;
ref = b; # a = b가 됨 값이 변경됨
}