source

포인터로 붕괴되는 어레이에 대한 예외?

manysource 2023. 1. 27. 21:23

포인터로 붕괴되는 어레이에 대한 예외?

많은 투고에서 "대부분의 경우 어레이 이름이 포인터로 붕괴된다"는 글을 보았습니다.
어떤 경우에 어레이 이름이 첫 번째 요소에 대한 포인터로 소멸되지 않는지 알 수 있습니까?

그럼요.

C99에는 기본적으로 다음 세 가지 사례가 있습니다.

  1. 의 의론이라면&(address-of) 연산자.

  2. 의 의론이라면sizeof교환입니다.

  3. 스트링 리터럴 타입의 경우char [N + 1]또는 활자의 넓은 문자열 리터럴wchar_t [N + 1](N는 문자열의 길이)로, 다음과 같이 배열을 초기화하기 위해 사용됩니다.char str[] = "foo";또는wchar_t wstr[] = L"foo";.

게다가 C11에서는, 새롭게 도입된alignof연산자는 배열 인수가 포인터로 붕괴되지 않도록 합니다.

C++ 에는, 예를 들면, 참조에 의해서 전달되는 등, 추가의 룰이 있습니다.

언급URL : https://stackoverflow.com/questions/17752978/exceptions-to-array-decaying-into-a-pointer