프로그래밍 언어/C언어
포인터와 배열
김곰댕
2021. 12. 20. 20:19
728x90
1. 포인터로 배열 참조
배열명 : 배열의 시작 주소를 의미하는 상수
1) 배열의 시작 주소를 구할 때는 &없이 배열명만 사용 |
![]() |
2) 배열명을 포인터처럼 사용 가능 |
- 인덱스를 사용하는 대신 배열의 시작 주소로 포인터 연산을 하면 배열의 특정 원소에 접근 가능 |
3) *(arr+i)는 arr[i]를 의미 |
![]() |
4) 배열의 시작 주소로 초기화된 포인터를 이용해서 배열의 모든 원소에 접근 가능 |
5) 포인터 변수를 배열 이름인 것처럼 사용 가능 |
![]() |
- 배열의 이름은 그 자체로 시작주소이기 때문에 &a로 저장하지 않음 |
6) 포인터와 +, - 연산 |
- p + N : p가 가리키는 데이터형 N개 크기만큼 증가된 주소가 연산의 결과 |
- p - N : p가 가리키는 데이터형 N개 크기만큼 감소된 주소가 연산의 결과 |
![]() |
- '포인터 - 포인터' 연산은 두 포인터의 차를 구하는데 사용 |
![]() |
2. 포인터로 배열 원소
1) 배열의 원소를 가리키는 포인터는 배열의 어떤 원소든지 가리킬 수 있음 |
![]() |
2) 포인터가 배열의 원소가 아닌 일반 변수를 가리킬 때도 *(p+i) == p[i]는 항상 성립함 |
![]() |
배열과 포인터의 차이점
- 배열이 메모리에 할당되고 나면, 배열의 시작 주소 변경 불가
- 포인터 변수는 값을 변경할 수 있으므로, 포인터 변수에 보관된 주소는 변경 가능
- 배열은 상수, 포인터변수는 변수
728x90