gpt4 book ai didi

c++ - 在指针迭代中使用 for 循环时出现段错误

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

这是我编写的一小段代码,用于测试我对指针的了解:

int *grades;
*(grades+0) = 100;
*(grades+1) = 87;
*(grades+2) = 99;
*(grades+3) = 92;

cout<<*(grades+0)<<endl;
cout<<*(grades+1)<<endl;
cout<<*(grades+2)<<endl;
cout<<*(grades+3)<<endl;

我知道这样分配指针的缺陷。然而,上面的代码片段正确地打印出了每个等级的值。问题是我是否使用 for 循环自动显示指针的内容。

int *grades;
*(grades+0) = 100;
*(grades+1) = 87;
*(grades+2) = 99;
*(grades+3) = 92;

for(int i=0;i<4;++i)cout<<*(grades+i)<<endl;

为什么添加 for 循环会导致段错误。我知道段错误的原因,但这两个代码片段不是基本相同吗?我用的是 https://www.onlinegdb.com/用于编写代码。

最佳答案

这两种情况(有或没有 for 循环)都受到相同的 undefined behavior 的影响。 ,而UB的本质就是任何事情都有可能发生。这就是为什么你的两个“基本相同”的片段在行为上有所不同。

关于c++ - 在指针迭代中使用 for 循环时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51376642/

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