gpt4 book ai didi

c++ - 了解将数组传递给没有其大小的函数时丢失的信息

转载 作者:行者123 更新时间:2023-11-28 08:12:09 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
finding size of int array

我很好奇为什么我会在这个简单的 C++ 代码中得到以下行为。

在此,我尝试在 2 个不同的地方计算 float 组的大小:

#include <iostream>
#include <iomanip>

using namespace std;

void foo(float a[])
{
int size = sizeof(a) / sizeof(float) ;

cout << size <<std::endl;
}



int main(int argc, char *argv[])
{

float a[] = {22.2, 44.4, 66.6} ;

int size = sizeof(a) / sizeof(float) ;

cout << size <<std::endl;

foo(a);

return 0;
}

使用 gcc 编译器,我得到的输出为

~: ./a.out
3
2
~:

对于其他数组大小,我得到的第一个条目是正确的大小,但第二个条目总是 2,

现在在我的代码中,如果我使用数组并且我通常使用 std:: vector ,我从不传递没有大小的数组。但我很好奇这里发生了什么。

“a”在传递给函数时丢失了哪些信息?

第二个 sizeof(a) 计算的是什么?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com