포인터와 배열
배열은 배열 자체로 주소값
배열명 = 배열의 첫번째 방 주소값
array = &array[0]
*array = array[0]
char str [] = "korea";
"korea" 도 주소상수로 취급됨!
char*p = str; 이지만...
char* p = "korea"; 도 가능함
&array 는 엄밀하게는 2차원이지만 출력하면 &array[0]의 값이 출력됨
그러나 대표하는 값이 다름 전자는 배열 전체의 대표주소값이고 후자는 배열의 첫번째 값의 주소값임
int iarr[5] = {1,2,3,4,5};
//배열의 포인터 표현 방식이 가능함!
//printf("%d, %d\n", *iarr, iarr[0]); // iarr = &iarr[0], *iarr = iarr[0]
// 주소연산은 +,- 밖에 안됨! ==> +1 은 자기자신의 값(byte) 만큼 더해라 라는 뜻...
for(int i = 0; i < 5; i++)
{
printf("%d \n", *(iarr+i)); /// 포인터를 이용한 배열표현
}
printf("%d, %d \n", &iarr, iarr); // 배열 자체(전체 사이즈의 주소값), 과 첫번째 배열의 주소값을 나타냄
(= 출력되는 주소값은 동일)
함수를 이용한 배열의 출력시 주의할 점
*배열은 매개변수로 전달되지 않음! 그리고 배열은 주소값이라서 결국 포인터 변수(=주소값)으로 받게 된다..