,함수에 특정 크기의 배열 매개 변수가 있으면 포인터로 대체되는 이유는 무엇입니까?
#include <iostream>
using namespace std;
void foo(char a[100])
{
cout << "foo() " << sizeof(a) << endl;
}
int main()
{
char bar[100] = { 0 };
cout << "main() " << sizeof(bar) << endl;
foo(bar);
return 0;
}
출력
main() 100
foo() 4
- 이유는 어레이의 첫 번째 요소에 대한 포인터로 전달?
- C의 유산입니까?
- 표준은 무엇을 말하고 있습니까?
- C++의 엄격한 유형 안전이 중단 된 이유는 무엇입니까?
:: 배열이 같은 문제를 처리하는 데 너무 표준 알고리즘을 – paulm
무엇 엄격한 타입의 안전을 작동 방지? 누가 엄격한 유형 안전을 약속 했습니까? C++에는 그런 것이 없다. –
아래 답변에 대한 DR : 배열은 함수에 전달 될 때 포인터가되므로 크기를 확인하면 포인터 크기가됩니다. C로만 작업하는 중이라면 배열에서 벗어나려고하는 모든 크기를 다른 매개 변수로 미리 계산하는 것이 좋습니다. –