C++未定义行为-数组越界
生活随笔
收集整理的這篇文章主要介紹了
C++未定义行为-数组越界
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們先來看看下面的代碼:
#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; }當我們寫這段代碼的時候,編譯器就會發生這樣的問題。
這是為什么呢???
其實是發生了數組越界。
a[n]里面能裝n個數,可這是從0開始裝的,當我們從1開始裝的時候,最大的數組下標是n-1,可上面那段代碼我們卻讓它給數組下標為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; }這樣也是越界,只要我們給數組下標為n賦值,就是越界。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的C++未定义行为-数组越界的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 木瓜粥的功效与作用、禁忌和食用方法
- 下一篇: [蓝桥杯][算法提高VIP]分分钟的碎碎