가능한 중복 : 다음 코드 감안할 때
Sizeof array passed as parameter이 두 가지 경우에 sizeof (배열)가 다른 이유는 무엇입니까?
, 인쇄 (포인터의 크기 주어진 64 비트 것 같다) I가 현재 해요 시스템 :
32
4
int의 크기는이 시스템에서 4 바이트 여야하므로 8 * 4 = 32가 적합합니다. 또한 포인터의 크기도 4 바이트가되어야한다는 것을 이해합니다. 이는 foo의 배열에서 발생하는 것입니다.
내 질문에 왜 sizeof (arr)는 main()에서 sizeof (arar)가 sizeof (myarray)와 다르게 처리되는 이유는 둘 다 특별히 int [8] 배열입니까? 나는 두 경우 모두에서 32를받을 것으로 예상 했었고 그것이 왜 다른 방법으로 끝날 지 혼란 스럽습니다.
#include <iostream>
void foo(int arr[8])
{
std::cerr << sizeof(arr) << std::endl;
}
int main()
{
int myarray[8];
std::cerr << sizeof(myarray) << std::endl
foo(myarray);
}
예 : http://stackoverflow.com/questions/1328223/sizeof-array-passed-as-parameter – Kusalananda
배열이 함수 호출에서 작동하는 방식이 아닙니다 ... –
+1, 좋은 호출입니다. 나는 보통 그 시간을 확인하지 않았다. –