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를 쉽게 만들 수 있습니다) 사용됨.
'컴퓨터 > 언어,프로그래밍' 카테고리의 다른 글
[C#] 데이터 타입 (이름, 범위, 디폴트 값) (0) | 2012.09.16 |
---|---|
[스크랩] [Visual C#] 문자열의 내용을 검색하거나 조작하는 방법 (0) | 2012.09.13 |
[스크랩] [C#.NET] 입출력 관련 정리 (0) | 2012.09.11 |
[C#] 예외처리 (try, catch, finally) (0) | 2012.09.11 |
[C#] 프로세스 죽이기 (Process Kill) (0) | 2012.09.11 |