c++ 배열 붕괴 현상

https://ko.coder.work/so/c/270811

 

c - C의 배열이 포인터로 붕괴되는 이유는 무엇입니까? - IT 툴 넷

c - C의 배열이 포인터로 붕괴되는 이유는 무엇입니까? c arrays pointers

ko.coder.work

 

c++ 을 하다보면 sizeof(array)로 배열의 크기를 찾거나 배열을 매개변수로 넘겨줄 때 가 있다.

 

그러면 배열 붕괴현상 즉, 매개변수로 배열을 넘겨줄 때 배열이 포인터형식으로 되는 경험을 할 수있다.

 

이는 1970년대의 컴퓨터에서 스택 크기를 초과할 경우를 방지하기 위해 디자인 된 방식이다.

 

즉,

int main()

{

int arr[10] = {1,2,3,4,5,6,7,8,9,10};

sizeof(arr);  // 을 했을때 4가 나오지만

solution(arr);  // << arr의 사이즈 반환하는 함수

//이때는 4를 반환하게 된다.

//왜냐하면 배열이 포인터형식으로 바뀌기 때문이다.

//또한, sizeof(배열)을 했을 때 컴파일 시 상수화된다. 같은함수에서는 상수화된 이 크기를 보고 알 수 있는 것

//하지만 매개변수로 넘겨주엇을 때는 포인터로 넘겨주어 포인터인지 배열인지도 알 수 없고, 같은 함수에서 그 크기를 찾을 방법이 없기 때문에 알 수없다.

}

 

 

  Comments,     Trackbacks