반응형


**  const 키워드의 의미

 

변수를 상수화 한다.

 

- const int n = 10;


//n은 상수화가 되어서


//n = 12; 이런것을 넣어도 바뀌지 않는다.

 



- const int* n;


//데이터 상수화라 한다.


//n이라는 포인터 값 자체를 상수화 시킨것 x


//n이라는 포인터가 가리키는 것을 상수화.


//따라서 *n = 12; 이런식으로 바꿔도 안바뀜.


//포인터를 통하여 n이 가리키는 값을 변경시키는 것을 방지

 

//단 a = 20; 이런식으로 n이 가리키던 값을 포인터로 아닌 그냥 변경시키는 것은 가능하다.

 

 

- int* const n;


//포인터가 상수화 된 것


//포인터가 b를 가리키고 있는데 a를 가리킬려하면 안바뀜


//즉, n = &a라는것은 허용되지 않는다.

 

 

- const int* const n


//두번째 세번째에 있는 모든 항목을 다포함 시킨다.

 

 

**  stack의 용도 및 특징

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void function (int);
 
int main(void)
{
 
 int size;
 cin >> size;
 function(size);
 return 0;
 
 
}
 
void function(int i)
{
 
 int array[i];
 
}
Crocus

 

 


 

힙(Heap) 영역 : 프로그래머가 할당

(런 타임 크기를 결정)

(int array[i]같은것은 i값이 변할때마다 배열의 사이즈가 변하기에 힙 영역에 올려 크기를 결정시킨다.)

 

스택(Stack)영역 : 지역변수, 매개변수 등을 위한 공간

(컴파일 타임 크기 결정)

(앞에선 int size때문에 4byte만 요구된다. 그런것의 크기를 결정시킨다.)


데이터영역 : 전역변수, Static 변수를 위한 공간

(프로그램이 종료될 때 까지 계속 공간을 차지)



반응형

'Basic > C++' 카테고리의 다른 글

레퍼런스의 이해  (0) 2015.10.03
자료형 bool의 기본 설명  (0) 2015.03.15
c++ 표준 입출력  (0) 2015.03.07
c++ 지역변수, 전역변수의 추가 이해  (0) 2015.03.07
c++ using 선언  (0) 2015.03.07