测试C语言数组越界

本文探讨了C语言中数组越界操作可能导致的问题。通过一个示例代码展示,当循环条件为11时,Dev-C++和Linux环境下,数组a[11]的地址与变量i地址相同,造成死循环;而在Visual Studio中,这种情况未发生,揭示了不同编译器对于栈内存分配的差异,提示学习者理解栈内存和数组越界的影响。
摘要由CSDN通过智能技术生成

#include<stdio.h>

int main()
{
    int i =0 ,a[10];
    printf(" &i = %d \n",&i);
    for(i;i<=10;++i)
    {
        a[i] = 0;
        printf("&a[%d] = %d \n",i,&a[i]);
    }
    return 0;
}

 1.在Dev-C++中

 当把循环条件改为11时,会出现死循环,因为a[11]的地址与i的地址相等,所以i的值被赋值为0

 相同的情况在linux也是一样的,

 

而在visual studio 中不会出现这种情况

 visual studio刚好是避开i的地址,而linux或者Dev-C++则没有,这个时候涉及到栈的相关内容,先去学习了

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值