我试图创建一个大小为5的数组,并使用输入填充每个索引,然后在每个索引处打印出每个输入。我得到的是数组大小为4的倍数。因此,当我输入5作为大小时,我得到的是20而不是5。
#include <iostream>
using namespace std;
int main() {
int userInput[5];
cout << sizeof(userInput);
// take input to fill array
for (int i = 0; i < sizeof(userInput); i++) {
cin >> userInput[i];
}
// print the array contents
for (int i = 0; i < sizeof(userInput); i++) {
cout << userInput[i]
}
}
答案 0 :(得分:3)
答案 1 :(得分:3)
sizeof :返回类型的对象表示形式的大小(以字节为单位)。
现在,由于div
占用className="my-checkbox"
个字节(这是编译器的implementation defined功能),因此int
的数组的大小为4
< strong>字节。
如果要获取数组的大小,可以使用(如Deduplicator在注释中指出的那样):
int[5]
在这种情况下,请不要忘记使用5*4=20
。
答案 2 :(得分:2)
或者,要获取C数组的大小,请在支持C ++ 17的编译器上使用std::size()函数:
#include <iostream>
int main() {
int userInput[5];
int arrsize = static_cast<int>(std::size(userInput));
for (auto i = 0; i < arrsize; i++) {
std::cin >> userInput[i];
}
for (auto i = 0; i < arrsize; i++) {
std::cout << userInput[i];
}
}
您可以使用range-based for loops简化操作:
#include <iostream>
int main() {
int userInput[5];
for (auto& el : userInput) {
std::cin >> el;
}
for (auto el : userInput) {
std::cout << el;
}
}
或用std::array包装器替换C样式数组:
#include <iostream>
#include <array>
int main() {
std::array<int, 5> userInput;
for (auto& el : userInput) {
std::cin >> el;
}
for (auto el : userInput) {
std::cout << el;
}
}