2020. 7. 5. 21:26, 개발/기타
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(배열)을 했을 때 컴파일 시 상수화된다. 같은함수에서는 상수화된 이 크기를 보고 알 수 있는 것
//하지만 매개변수로 넘겨주엇을 때는 포인터로 넘겨주어 포인터인지 배열인지도 알 수 없고, 같은 함수에서 그 크기를 찾을 방법이 없기 때문에 알 수없다.
}

'개발 > 기타' 카테고리의 다른 글
c++ template iterator 사용시 '식별자'은(는) 예기치 않은 토큰입니다. (0) | 2020.07.27 |
---|---|
c++ 오퍼레이터 작성시 유의사항 (0) | 2020.07.19 |
c++ 기초 - lvalue , rvalue (0) | 2020.07.16 |
유니티 빌드시 회색화면 나오는 오류 (0) | 2020.02.26 |
유니티 잡다한 팁 - 파티클 시스템 변수 참조 particleSystem. (0) | 2020.01.27 |
Comments, Trackbacks