传递值时更改整数数组的大小

Dzu*_*yen 0 c++ arrays

我只是好奇出现以下错误的原因是什么:我正在尝试确定整数数组的大小.

当我在main函数中找到数组的大小时,此代码返回正确:

 int program[12] = { 1007, 1008, 2007, 3008, 2109, 1109, 4300, 0, 0, 0, -99999 };
 cout<<sizeof(program)/sizeof(program[0])<<"\n";
Run Code Online (Sandbox Code Playgroud)

但是如果我按程序将程序传递给函数,它总是返回2:

void Sipmletron::load(int program[])
{
    int length=sizeof(program)/sizeof(program[0])
    std::cout<<length<<"\n";
    memory= new int[length];
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 6

您不能按值传递数组.该参数作为指向数组的第一个元素的指针传递,因此您实际上在计算sizeof(int*) / sizeof(int).

  • @Calpis:我们可能猜测编译器使用的目标是64位环境.但如果我没有弄错的话,从理论上讲,"int"也可能只有16位. (2认同)