2 개의 배열이 있습니다. 1은 1D 배열이고, 두 번째 배열은 2D 배열입니다. 둘 다 함수로 전달합니다. 함수에서 sizeof
연산자를 사용하려고 시도하면 main
자체가 사용됩니다. 그러나, 그것은 나에게 2 개의 다른 출력을 준다. sizeof C++의 연산자
이
내 프로그램 ::#include <iostream>
using namespace std;
void test(int *a,int b[][10]){
cout<<"Inside Test"<<endl;
cout<<sizeof(a)<<endl;
cout<<sizeof(b)<<endl;
}
int main() {
// your code goes here
int a[10];
int b[10][10];
cout<<sizeof(a)<<endl;
cout<<sizeof(b)<<endl;
test(a,b);
return 0;
}
이 출력 ::
40
400
Inside Test
4
4
기능 test
의 출력이 나를에 따라 포인터의 크기는이다. (제발 내가 틀렸다면 제발 정정하십시오) 내가 믿는 한 가지 가능한 이유는 함수 호출이 내 배열의 주소를 함수의 다른 위치에 복사하기 때문에 액세스로 인해 4가 출력되기 때문입니다.
그러나, test
에있는 함수에서 sizeof 연산자를 사용하고 정확한 크기를 인쇄 할 수있는 방법이 있습니까? 또는 올바른 크기를 얻는 다른 방법이 있습니다. 그리고 더 이상 제가 4
이 올바른 것인지 아닌지에 대한 결과를 위해 위에 주어진 이유가 무엇입니까?
사전에 도움을 주셔서 감사합니다. : D
sizeof (int)는 sizeof (int *)이므로 포인터의 크기입니다. – Jarod42
포인터에서 배열의 크기를 얻을 수있는 방법은 없습니다. 그리고 함수 매개 변수는 모두 포인터입니다. – juanchopanza
배열을 함수로 전달하더라도 함수는 배열이 아니라 포인터입니다. – dasblinkenlight