首页 > C > 数组 阅读:57,774

数组溢出与预防

< 上一页 字符数组 数组与指针关系 下一页 >

C语言中,数组的元素下标是从0开始计算的,所以,对于n个元素的数组a[n] 遍历它的时候是a[0],a[1],...,a[n-1],如果遍历到a[n],数组就溢出了。

void print_array(int a[], int n)

{

    for (int i = 0; i < n; i++)

    {

        a[i] = a[i+1];//i = n-1时,就发生了数组越界

        printf(“%d\n”, a[i]);

    }

}

上面的循环判断应该改为:

for (int i = 0; i < n-1; i++)

 

 

void print_array(int (&a)[10])

{

         for(int i=0;i<10;i++)

{

         printf(“%d\n”,a[i]);

}

}

int main(void)

{

         int a[9]={0};

    printf_array(a);//无法通过,编译错误

}

< 上一页 字符数组 数组与指针关系 下一页 >

周哥教IT,分享编程知识,提高编程技能,程序员的充电站。跟着周哥一起学习,每天都有进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

当你决定关注「周哥教IT」,你已然超越了90%的程序员!

IT黄埔-周哥教IT技术交流QQ群:213774841,期待您的加入!

二维码
微信扫描二维码关注