sizeof
은 대괄호 안에 명시 적으로 지정된 크기없이 선언되었지만 선언에서 초기화되는 배열에서 안전하게 사용할 수 있습니까? 특별한 컴파일러 플래그없이 그 소리-800.0.42.1와 맥 OS에서 컴파일하면이 12
의 예상 결과를 산출,명시 적 길이가없는 sizeof 배열
unsigned int arr[] = { 1, 2, 3 };
size_t bytes = sizeof arr;
:
는 다음과 같은 코드를 생각해 보자.
그러나 C 표준 (또는 이에 대해 다른 경우 C 표준)이이를 보장합니까? 아니면 그것이 "제정신"이되도록 unsigned int arr[3]
처럼 선언해야합니까?
예. 컴파일러는 크기를 알고 있습니다. –
함수의 헤더가'void somefunction (int arr [], int n);과 같은 함수 내부에있을 때'sizeof (arr)'이 작동하는지 알고 싶습니다. 왜냐하면 호출 루틴에서 'somefunction'에'* int' 타입의 포인터를 넘길 수 있습니다. – ron
@ron - 아니요.'somefunction'이받는 것은 포인터가 아니라 배열입니다. 함수 내에서 sizeof arr은 sizeof (int *)와 같은 결과를 줄 것이다. –