gpt4 book ai didi

C++ 我的数组/循环有什么问题?

转载 作者:太空宇宙 更新时间:2023-11-04 15:51:02 25 4
gpt4 key购买 nike

我刚刚开始学习 C++,所以我相当确定答案可能很简单。作为测试,我只是设置一个数组,然后想通过遍历它来打印出该数组。

我的代码如下。它按预期打印出我的数组,但随后在其下方打印出大量其他数字。这些数字是多少?它们来自哪里?我怀疑“sizeof”不是最好用的。我发现的所有示例都比我需要的复杂得多。无论如何,我有兴趣了解额外的数字。有什么见解吗?

int age[4];
age[0]=23;
age[1]=34;
age[2]=65;
age[3]=74;

for (int i = 0; i <= sizeof(age); i++)
cout << age[i] << endl;
return 0;

...输出:

23
34
65
74
4
2147307520
0
2293608
4198582
1
3084992
3085608
-1
2293592
1980179637
-725187705
-2

最佳答案

sizeofbytes 为单位给出对象的大小。如果数组元素大于一个字节(如 int 通常是这样),则数字将大于数组大小。

获取数组中元素数量的一种方法是除以元素的大小:

for (size_t i = 0; i < sizeof(age)/sizeof(age[0]); i++)
std::cout << age[i] << '\n';

(请注意,您还需要 < 而不是 <= ,否则您仍将离开终点)。

另一种方法是将对数组的引用传递给函数模板,根据数组大小进行实例化:

template <typename T, size_t size>
void print(T (&array)[size])
{
for (size_t i = 0; i < size; ++i)
std::cout << array[i] << '\n';
}

print(age);

另一种方法是使用 std::vectorstd::array而不是普通数组:

std::array<int, 4> age;
age[0]=23;
age[1]=34;
age[2]=65;
age[3]=74;

for (size_t i = 0; i < age.size(); ++i)
std::cout << age[i] << '\n';

关于C++ 我的数组/循环有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8263412/

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