포인터는 포인터 아닌가여?
배열 타입을 갖는 수식은 자동 변환되어, 그 배열의 첫번째 원소를 가리키는 포인터 주소값을 반환한다. 이 결과값은 lvalue가 아니다. 여기에는 아래의 3가지 예외상황이 존재한다.
- 예외1 : sizeof 연산자의 피연산자로 쓰인 경우. 예) sizeof(arr)
- 예외1 : & 연산자의 피연산자로 쓰인 경우. 예) &arr
- 예외3 : char형 배열의 초기화에 쓰이는 문자열 상수인 경우. 예) char str[] = "hello";
여기서 "예외"라는 말은, 배열이 배열 그자체로 쓰인다는 뜻인 거 같은데요.
만약에 저 3가지 예외일 때도 상수포인터로 변환된다면
1: 4만 나올것이고
2: 첫원소의 주소의 주소가 나올 것이고
3: 음 이건... 잘 설명을 못하겠네 느낌은 오는데
★
근데 배열 초기화할 때는
for(i = 0; i < SIZE; i++){
arr[i] = 초기값들;
}
이걸 컴파일러가 자동으로 해주는 건가요?
댓글 0