좋은 답변 감사합니다. 많은 도움이 되었습니다.
const - [기본적으로] 무엇이든 상수화 시켜준다!
|
int ar[5]={1,2,3,4,5};
const int *ptr=&ar[0]; //int를 고정(값 변경 불가 주소 변경 가능)
pi2++; // 포인터가 다른 대상체를 가리킬 수 있다.
*pi2=0; // 에러 : 대상체가 상수이므로 값을 변경할 수 없다.
int * const ptr=&ar[0];//ptr(포인터)를 고정(값 변경 가능. 주소 변경 불가)
pi3++; // 에러 : 포인터가 다른 대상체를 가리킬 수 없다.
*pi3=0; // 대상체의 값을 변경할 수 있다.
const int * const ptr=&ar[0];//int와 ptr을 고정(값 변경 불가 주소 변경 불가)
pi4++; // 에러 : 포인터가 다른 대상체를 가리킬 수 없다.
*pi4=0; // 에러 : 대상체가 상수이므로 변경할 수 없다.
[ 요약, 정리]
1. const는 자신의 오른쪽 것에 적용된다.
2. 오른쪽에 적용대상이 없으면 왼쪽에 적용한다.
여기서 말하는 적용대상이란 * 또는 형(type)임.
------------------------------------------------------------------------------
2) static (정적변수)
- 블럭 안에서만 유효한 값을 가지지만 자동변수와 같이 없어지지 않고 블럭으로 다시
돌아왔을 때 이전 값을 다시 이용 가능
- 초기화를 생략하면 0으로 자동 초기화
- 힙(Heap)에 메모리 할당
- 선언된 위치에 따라 다음과 같이 구분됨
. 내부정적변수 : 함수 내부에서 선언되며, 함수 내부에서만 사용이 가능. 하지만,
프로그램이 실행되는 동안 존재
. 외부정적변수 : 함수 외부에서 선언되며, 다른 소스파일에서는 참조할 수 없음
== 정리하면
static은 함수 또는 파일에서 값을 보존할 필요가 있을 때(예를 들어 어떤 함수를 몇 번 호출했는지 알고 싶을 때 static 변수로 하나 선언해서 호출될 때마다 1씩 더해주면 Counter를 쉽게 만들 수 있습니다) 사용됨.
: 내 블러그 ㅋㅋㅋ
의견 1
'language > C' 카테고리의 다른 글
BCD(binary Coded Decimal) (0) | 2009.06.23 |
---|---|
gcc설치하여 vim으로 편집하기 (0) | 2009.05.19 |
continue 와 break 차이 (0) | 2009.05.13 |
#define와 const 차이점 (1) | 2009.05.05 |
#ifdef와 defined() 차이점 (0) | 2009.05.05 |