【发布时间】:2010-02-16 04:51:58
【问题描述】:
我试图简单地打印出数组中包含的值。
我有一个名为“结果”的字符串数组。我不知道它到底有多大,因为它是自动生成的。
根据我的阅读,您可以通过以下方式确定数组的大小:
sizeof(result)/sizeof(result[0])
这是正确的吗?因为对于我的程序,sizeof(result) = 16 和 sizeof(result[0]) = 16 所以代码会告诉我我的数组大小为 1。
但是这看起来不正确,因为如果我手动打印出这样的数组值:
std::cout << result[0] << "\n";
std::cout << result[1] << "\n";
std::cout << result[2] << "\n";
std::cout << result[3] << "\n";
etc...
...然后我看到了我正在寻找的结果值。该数组的长度/大小超过 100 个。
似乎确定数组的大小/长度应该非常简单......所以希望我只是在这里遗漏了一些东西。
我有点 C++ 新手,所以任何帮助将不胜感激。
【问题讨论】:
-
我将 sizeof(result)/sizeof(result[0]) 用于原始类型并且它曾经可以工作,但是如果您使用的是字符串,为什么还要使用数组,请使用向量.
-
请出示
result的声明。没有它,就不可能说出你的问题是什么。 -
@David Thornley:我认为可以肯定地假设他不是在处理一个包含一个元素的真实数组,唯一的另一种方法是他可以在两个
sizeof调用中得到 16。 -
@HansPassant 让我们明智地假设字符串存储在
char的数组中(例如char result[][16] = { "maximum", "of", "fifteen", "characters", "per", "string" };)......有什么证据表明机器是128 位的? 128 位甚至意味着什么?是公交车的宽度吗?如果是这样,则有 64 位机器没有 64 位总线,而 32 位机器有。是原生类型的宽度吗?如果是这样,即使是 1995 年的 Pentium Pros 也有一些 128 位寄存器......
标签: c++ arrays string sizeof cout