gpt4 book ai didi

c++ - C++中的数组初始化?

转载 作者:行者123 更新时间:2023-11-30 02:08:42 26 4
gpt4 key购买 nike

int main()
{
clrscr();
int x[3];
int n;
cout<<"Enter the array size= ";
cin>>n;
cout<<"Enter the elements for array= ";
for(int i=0;i<n;i++)
{
cin>>x[i] ;
}
for(i=0;i<n;i++)
{
cout<<"x["<<i<<"]="<<x[i]<<"\n";
}
getch();
return 0;
}

当我在 C# 中尝试相同的逻辑时,我得到了正确的输出,就好像我输入的数组大小比我初始化的多,它给出了异常。但在 C++ 中,无论是在编译时还是在运行时,都不会出现任何类型的错误。但是根据规则,如果我给出的数组大小大于我初始化的大小,它应该在运行时在输出中给出一些错误。还有一件事,为什么它将 09 确定为两个数字而不是 90,它在输出中显示不同索引处的 0 和 9。

output

enter image description here

最佳答案

如果你有一个数组:

char array[3];

然后您尝试写入一个不存在的元素:

array[15] = '!';

那么这一个错误。但是,C++ 标准不需要编译器来诊断此错误,而且大多数情况下不需要。这是因为每次访问数组时都需要计算 以确定您是否在数组边界内。

相反,由程序员来确保他/她正确使用数组,通过自己编写这些边界检查。然后仅在程序员认为有必要时才执行检查,并且不会浪费计算。

所以:

std::cin >> n;

if (n > 3)
throw std::runtime_error("OMG not enough space in my array!");

关于c++ - C++中的数组初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6323885/

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