int arr[5]; 일때 &arr은...
글쓴이: wans038 / 작성시간: 토, 2016/01/30 - 5:36오전
안녕하세요.
너무 초보적인질문이긴 합니다만 열심히 공부중입니다.
#include <iostream> using namespace std; int main(int argc, char** argv) { int arr[5]; // 0x0001 int* pArr = arr; cout << arr << ", " << &arr; // 똫같이 0x0001이 출력 }
배열의 이름은 배열의 시작 주소값 & 상수
그 배열의 이름을 가지고 &연산을 똫같은 주소값이 출력되는데...
int* test(void) { return &arr; // 에러... }
왜 에러가 날까요...어짜피 똫같은 주소값이 출력되는데 1차원 포인터형 아닌가요...?
Forums:
주소는 같지만 타입이 다릅니다. arr : 배열의
주소는 같지만 타입이 다릅니다.
arr : 배열의 첫번째 원소를 가리키는 포인터 주소값. 여기서는 int * 형. &arr[0]과 동일
&arr : 배열 전체에 대한 포인터 주소값. 여기서는 int *[5] 형. (pointer to array of int[5])
포인터 또한 데이터형이고, 따라서 항상 그 타입이 뭔지 생각해야 합니다.
이렇게 생각하시면 되겠군요.
"10미터 앞에 있는 저거 가져와"라고 했을때 그게 과일 바구니인지 그 안에 담겨진 사과 하나인지는 아무도 모릅니다.
댓글 달기