Notice
코딩항해기
[C] 포인터와 배열 본문
포인터 상수
(배열의 주솟값)
배열 요소의 주솟값을 확인하면 첫 번째 요소부터 순서대로 나열되어있음을 확인할 수 있다. 그리고 배열의 주솟값은 배열 첫번째 요소의 주솟값과 동일한 것을 확인 할 수 있다. 즉, 배열 시작의 주솟값을 나타내는 포인터 변수이다. 그러나 배열의 이름은 다른 포인터 변수와 달리 값의 저장이 불가능한 상수형태의 포인터이다. 이를 포인터 상수라고도 한다.
배열의 포인터 연산
배열의 이름은 포인터이므로 배열의 이름을 피연산자로 해 *연산자를 사용할 수 있다. 배열의 이름은 첫 번째 요소(인덱스 0번)과 동일하므로 *연산자를 사용하게 되면 첫 번째 요소의 값이 반환된다.
위와 같은 방식으로 첫 번째 요소에는 접근할 수 있지만 배열의 다른 요소에 접근하려면 포인터 변수의 값을 증가시켜 포인터형의 크기만큼 주솟값을 증가시켜야 접근이 가능하다. 포인터 주소의 값은 자료형 타입에 따라 정해진 byte수 만큼 증가한다.
int num = 3;
int ptr = #
ptr++; //int 자료형을 가지고 있으므로 4byte만큼 주솟값 증가
ptr += 1; //int 자료형을 가지고 있으므로 4byte만큼 주솟값 증가
//자료형에 따라 증가되는 주솟값이 다르다. char는 1byte, short는 2byte 등
* 주의사항
배열의 할당 영역을 벗어나는 포인터 연산을 하게 될 경우, 주솟값도 하나의 값이기 때문에 에러를 유발하지는 않지만 할당되지 않은 메모리에 접근하게 되고 의미없는 값이 반환되어 프로그램에 악영향을 줄 수 있으니 지양하는 것이 좋다.
포인터 배열
포인터형을 사용해 배열을 선언하면 포인터를 저장할 수 있는 배열이 된다. 선언 및 초기화 방식은 일반 배열과 동일하다.
int * iparr[10]; //길이가 10인 int형 포인터 배열
double * dparr[20]; //길이가 20인 double형 포인터 배열
'C' 카테고리의 다른 글
[C] 포인터의 이해 (0) | 2024.10.04 |
---|---|
[C] 연산자 (+연산자 우선순위) (0) | 2024.10.03 |
[C] 기본 입출력함수 printf(), scanf() (0) | 2024.10.02 |
[C] C언어 기본 자료형 (+unsigned 자료형) (0) | 2024.10.01 |
[C] C언어 프로그램의 구성 (기초) (0) | 2024.09.30 |