C 언어 레포트
- 최초 등록일
- 2017.11.28
- 최종 저작일
- 2017.11
- 9페이지/ 한컴오피스
- 가격 2,000원
목차
없음
본문내용
○포인터(pointer)와 배열 관계
포인터와 배열은 밀접한 관계가 있으며 이제부터 그 관계를 설명하고자 합니다. 배열의 이름은 사실 배열의 시작번지를 갖는 포인터 상수이며, 즉 첫번째 원소의 주소값을 나타냅니다. 배열의 이름 또한 포인터라는 사실을 꼭 알아야합니다. 배열의 이름은 포인터로, 그 값을 바꿀 수 없는 상수 형태의 포인터입니다.
따라서 배열의 의미와 이름과 포인터의 차이는 상수와 변수의 특성에 의한 차이가 있으 뿐 둘은 같다
여기서 %p는 주소 값의 출력에 사용되는 서식문자입니다.
보시면 16진수로 주소값이 표현되는데 각 배열 arr[0~2] 까지 4바이트 만큼의 차가 있습니다.
왜냐하면 int형 arr 이기 때문이죠! 따라서 모든 배열요소가 메모리 공간에 나란히 할당되는 것을 알 수 있습니다.
또한 배열의 첫 번째 바이트의 주소 값(00C5F888)이 배열의 이름을 출력한 결과와 같다는 것을 알 수 있습니다.
배열의 이름은 배열의 시작 주소 값을 의미하며 그 형태는 값의 저장이 불가능한 상수이다. 앞에서 배운 포인터 변수와 배열의 이름(포인터 상수) 의 큰 차는 주소 값의 변경의 가능, 불가능입니다.
배열의 이름 == 포인터 상수.
그렇다면 여기서 배열의 이름도 포인터 변수를 대상으로 하는 * 연산이 가능하다는 것을 알 수 있습니다.
int arr[5]; 라면 이것은 int형 포인터 arr이 되며 int * 와 같습니다.%g 연산은 알맞는 실수연산으로 바꿔주는 것입니다.
◉ 포인터를 배열의 이름처럼 사용할 수도 있다
배열의 이름과 포인터 변수는 변수냐 상수냐의 특성적 차이만 있을 뿐, 둘 다 포인터이기 때문에 포인터 변수로 할 수 있는 연산은 배열의 이름으로도 가능하고, 배열의 이름으로 할 수 있는 연산 또한 포인터 변수로도 가능하다.
참고 자료
없음