C++未定义行为-数组越界
生活随笔
收集整理的這篇文章主要介紹了
C++未定义行为-数组越界
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
我們先來(lái)看看下面的代碼:
#include <iostream> using namespace std; const int N = 100010; int a[N]; int main() {for (int i = 1;i<=N;i++) a[i] = 2;return 0; }當(dāng)我們寫這段代碼的時(shí)候,編譯器就會(huì)發(fā)生這樣的問(wèn)題。
這是為什么呢???
其實(shí)是發(fā)生了數(shù)組越界。
a[n]里面能裝n個(gè)數(shù),可這是從0開(kāi)始裝的,當(dāng)我們從1開(kāi)始裝的時(shí)候,最大的數(shù)組下標(biāo)是n-1,可上面那段代碼我們卻讓它給數(shù)組下標(biāo)為n的數(shù)組賦值,因此發(fā)生了數(shù)組越界,也就是未定義問(wèn)題。
改成如下代碼即可:
#include <iostream> using namespace std; const int N = 100010; int a[N]; int main() {for (int i = 1;i<=N-1;i++) a[i] = 2;return 0; }注意:
#include <iostream> using namespace std; const int N = 100010; int a[N]; int main() {for (int i = 0;i<=N;i++) a[i] = 2;return 0; }這樣也是越界,只要我們給數(shù)組下標(biāo)為n賦值,就是越界。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的C++未定义行为-数组越界的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 木瓜粥的功效与作用、禁忌和食用方法
- 下一篇: DevC++如何安装自定义头文件并使用