gpt4 book ai didi

c++ - 能够访问索引大于数组长度的元素

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

以下代码似乎在不应该运行的时候运行。在这个例子中:

#include <iostream>
using namespace std;
int main()
{
char data[1];
cout<<"Enter data: ";
cin>>data;
cout<<data[2]<<endl;
}

输入长度大于 1 的字符串(例如,“Hello”),将产生输出,就好像数组足够大以容纳它(例如,“l”)。当它试图存储一个比数组长的值或当它试图检索一个索引大于数组长度的值时,这不应该抛出错误吗?

最佳答案

The following code seems to be running when it shouldn't.

不是“应该”“不应该”。它是关于“可能”“可能不会”

也就是说,您的程序可能会运行,也可能不会。

这是因为你的程序调用了undefined behavior .访问超出数组长度的数组元素会调用未定义的行为,这意味着任何事情都可能发生。

编写代码的正确方法是使用 std::string 作为:

#include <iostream>
#include <string>

//using namespace std; DONT WRITE THIS HERE

int main()
{
std::string data;
std::cout<<"Enter data: ";

std::cin>>data; //read the entire input string, no matter how long it is!

std::cout<<data<<std::endl; //print the entire string

if ( data.size() > 2 ) //check if data has atleast 3 characters
{
std::cout << data[2] << std::endl; //print 3rd character
}
}

关于c++ - 能够访问索引大于数组长度的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10992464/

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