포인터로 붕괴되는 어레이에 대한 예외?
많은 투고에서 "대부분의 경우 어레이 이름이 포인터로 붕괴된다"는 글을 보았습니다.
어떤 경우에 어레이 이름이 첫 번째 요소에 대한 포인터로 소멸되지 않는지 알 수 있습니까?
그럼요.
C99에는 기본적으로 다음 세 가지 사례가 있습니다.
의 의론이라면
&
(address-of) 연산자.의 의론이라면
sizeof
교환입니다.스트링 리터럴 타입의 경우
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
'source' 카테고리의 다른 글
MARIADB: 범위에 조인된 선택 항목에는 인덱스가 사용되지 않습니다. (0) | 2023.01.27 |
---|---|
Guzle 6: 응답에 대한 json() 메서드는 없습니다. (0) | 2023.01.27 |
아스타리스크*는 Python에서 무엇을 의미합니까? (0) | 2023.01.27 |
"GROUP BY"의 모든 항목 수에 대한 "카운트(*)"의 백분율 가져오기 (0) | 2023.01.27 |
'getaddrinfo EAI_AGAIN' 오류의 원인은 무엇입니까? (0) | 2023.01.27 |