* 출처: 코딩도장 36.8 배열을 포인터에 넣기
* 출처: 최유경 교수님 C 프로그래밍 포인터 수업자료
■ 배열 이름의 비밀
배열 이름은 배열의 0번 원소의 시작 주소를 의미한다.
※ &ar은 전체 배열의 시작 주소. (값은 같지만, 다른 자료형이다.)
□ 주소를 이용한 배열 참조
- 배열 이름은 주소를 의미하므로, 참조 연산자와 함께 사용할 수 있다.
■ 배열 주소에 대한 증감 연산
- 배열 원소 하나의 크기만큼 증감 (int 배열의 경우: 4)
- ar+i : 배열 ar의 i번째 원소의 주소
- *(ar+i) : 배열 ar의 i번째 원소의 값. 즉 ar[i]
■ 배열을 포인터 변수에 연결하여 사용하기
- 배열 이름은 주소를 의미하므로, 포인터 변수에 대입할 수 있다.
- 배열의 0번째 원소의 주소 ar에 i(번째)를 더한 ar+i를 인자로 입력한다.
※ 포인터 변수에 대한 증감 연산 시, 포인트 변수가 나타내는 자료형의 크기 단위로 증감한다. (ex. 정수형은 4)
※ 포인터 변수도 배열의 첨자 형태로 값을 참조할 수 있다.
BUT) 포인터 서식 지정자 (%p) 사용할 때는 배열처럼 인덱스 사용 불가!!
배열은 그 자체로 주솟값이기 때문에 포인터에 넣을 수 있다.
(배열은 포인터로 선언하지 않아도 그 자체로 포인터 기능을 한다.)
다음과 같이 포인터에 배열을 넣고, 포인터에서 인덱스로 요소에 접근할 수 있다.
(자료형과 차원이 같다면) 배열을 포인터에 바로 할당할 수 있다.
즉, 실제로는 배열도 포인터이다.
■ 배열과 포인터의 관계 정리
■ 배열 이름과 포인터 변수의 차이점
※ 배열과 포인터가 다른 점: sizeof로 크기를 계산했을 때
- sizeof(배열): 배열이 차지하는 전체 공간 출력됨
- sizeof(배열의 주소가 들어있는 포인터): 포인터의 크기만 출력됨 (32비트->4, 64비트->8)
■ 배열과 포인터 주의사항
'Algorithm > C프로그래밍' 카테고리의 다른 글
[C언어] 2차원 배열(2): 2차원 배열의 크기 구하기 (0) | 2021.07.03 |
---|---|
[C언어] 2차원 배열(1): 2차원 배열 선언하고 값 할당하기 (0) | 2021.07.03 |
[C언어] 배열의 크기 구하기 (0) | 2021.07.03 |
[C언어] 다양한 경우의 수로 배열 선언하기 (2) | 2021.07.02 |
[C언어] 배열 개념: 배열을 선언하고 요소에 접근하기 (0) | 2021.07.02 |