● 포인터
포인터는 말 그대로 주소이다. 변수가 선언되면 기억장치 어딘가에 임의 공간이 할당된다. 이때
그할당된공간은주소로식별된다. 바로그주소를포인터라한다.
● 포인터 변수
포인터는 위치를 나타내는 정보로서, 프로그램에서 기억 장소의 위치를얄필요가있을때 이를위해 포인터 변수를사용한다. 이 처럼 주소를 저장하는 변수를 포인터 변수라 부른다.
※ 포인터 변수를 선언할 때 일반 변수와 구분하기 위해 간접지정 연산자(*)를 사용한다.
자료형 *포인터 변수 이름;
● 변수 사용 기본 규칙
1. 변수는 시용하기 전에 미리 선언해야 효봐.
2. 변수 선언에서 프로그래머로서의 예의 있는 코딩은 변수 초기화이다.
● 디버깅 모드에서 기본적으로 사용하는 단축키
F5 : 디버깅을시작합니다.
shift + F5 : 디버깅을중지합니다.
F9 : 현재 커서 위치에 중단점을 설정하거나 해제합니다
F10 : 프로시저 단위로 디버깅을 실행합니다.
F11 : 한 단계씩 코드로 디버깅을 실행합니다.
● 일반 변수와 포인터 변수를 값을 할당하는 형태
- 일반변수=값;
- 포인터 변수=주소;
일반 변수 -> 값
&일반 변수 -> 주소
포인터 변수 -> 주소
*포인터 변수 -> 값
● 선언과할당
- 자료형 일반 변수; //int a;
- 자료형 *포인터 변수; //int *pa;
- 일반 변수 = 값; //a=100;
- 포인터 변수 = 주소; //pa=&a;
● 선언과할당 선언과동시에초기화
- 자료형 일반 변수 = 값; / /int a=100;
- 자료형 *포인터 변수 = 주소; //int *pa=&a;
● 배열
변수는하나의 기억 공간 배열은 연속적인 기억 공간을나타낸다.
배 열을 사용하면 하나의 이름으로 여러개의 기억 공간을 시용할 수 있어 편리하다.
● 배열 선언
배열 선언은자료형과사용할 크기를함께 표기한다. 배열 이름은주소를, 배열 변수요소에 주소지
정 연산자(&)를 표기하면 주소를 배열 변수 요소를 그대로 사용하면 값을 나타낸다.
자료형 배열 이름[사용할 크기];
cout << "배열의 시작 주소 : " << 배열 이름 << endl;
cout << "배열의 시작 주소 : " << &배열 이름[0] << endl;
cout << "배열의 첫 번째 요소솟값 : " << 배열 이름[0] << endl;
● 배열선언 및 초기화
선언과 동시에 초기화할 수 있다.
자료형 배열 이름[사용할 크기]={초깃값 1, 초깃값 2, . .};
자료형 배열 이릅사용할 크기]={초깃값 1. };
//0번째 요소는 초깃값 1로 지정되고나머지는 0으로 초기화됨
● 배열은 포인터, 포인터 언산
포인터의 증감은배열의 자료형에 의해 기본크기가 결정된다.
● 문자열
문자의모음
● 문자배열
문자 변수의 자료형은 char이고 문자 상수는 작은따옴표(")로 표기하며, 기억 장소 1바이트를
차지한다. 이에 비해 문자열은 문자의 모음이다. 따라서 변수의 경우 여러 개의 문자 변수가 모
여 있는상태이다. 따라서 문자배열에 저장된 형태라할수 있다.
문자 배열에서는 문자열의 마지막을 나타내는 문자 ’\0’이 사용된다. 이는 널 (NULL) 문자라 부르며 문자열 상수를 지정하면 자동으로 함께 입력된다.
● 레퍼런스 변수
레퍼런스 변수는 이미 선언된 변수를 다른 이름으로 부르는 변수이다. 따라서 레퍼런스 변수는
변수 선언에서 반드시 어떤 변수를다른 이름으로부르는가를명시해야한다. 즉반드시 초기화
가 함께 이루어져야 한다. 레퍼런스 변수는 선언에서 레퍼런스 변수를 나타내는 기호인 주소지
정 연산자(&)를 함께 표시한다.
자료형 &변수 이름 = 변수;
● 동적할당
동적 할당은 프로그램 실행 중에 펼요한 만큼 기억 장소를 요청하는 것이다. 동적 할당은 기억 장소를
할당 하고 할당된 기억 장소의 주소를 포인터 변수에 저장하면 되는 것이다. 이때 기억 장소 할당을
위해 new 연산자를 사용한다.
자료형 *포인터 변수 = new 자료형[개수];
필요한 기억 장소가 하나인 경우 ’[개수]’는 생략한다. 동적 할당으로 확보한 기억 장소는 모두
사용하고 나서 그만 사용하겠다고 해제해야 한다. 해제에 사용되는 명령은 delete이다.
delete 포인터 1변수; '//하나의 기억 장소 해제 시
delete [ ] 포인터 변수; //여러 개의 기억 장소 해제 시
※ delete 명령을 실행하지 않으면 프로그램이 종료될 때까지 메모리를 확보
● 동적할당 주의사항
기억 장소를 더 이상 사용하지 않을 때는 반드시 해제해야 한다. 그 이유는 앞서 배웠던 일반 변
수, 포인터 변수, 배열 변수 레퍼런스 변수 등 정적으로 할당된 변수들은 컴퓨터 기억 장소 중
에 스택 (Stack)에 할당되는 반면 동적 할당은 협 (Heap)에 할당되기 때문이다. 기억 장소가 할
당되는 위치가 다른 이유는 할당된 기억 장소가 프로그램 시작과 종료를 기준으로 얼마나 지속
되는가를 판단하기 때문이다. 협에 할당되면 delete를 이용해서 해제하지 않으면 프로그램이
종료될 때까지 지속된다.
'프로그래밍 > 공부' 카테고리의 다른 글
3장 예제 (0) | 2013.02.18 |
---|---|
2장 예제 (0) | 2013.02.18 |
제 3장 조건문, 반복문 네임스페이스 (0) | 2013.02.14 |
정식수업 2일차 (0) | 2013.02.14 |
정식 공부 1일차 (2/13). (0) | 2013.02.14 |