+ -
当前位置:首页 → 问答吧 → [讨论]Libnids运行出错

[讨论]Libnids运行出错

时间:2011-11-17

来源:互联网

最近遇到一个程序,不知原理,发上来请教一下大家

代码:
[size=150]#include<stdio.h>
int main(int argc, char **argv)
{
   int x=-1;
   int arr[x];
   arr[x-1]=3;
   printf("%d\n", arr[x-1]);
   return 0;
}[/size]


这个程序在GCC中编译通过,运行输出为 3 ,看似没有错误。但不知道内存空间到底怎么分配的

另外看这个:
代码:
[size=150]#include<stdio.h>
int main(int argc, char **argv)
{
   int x=0;
   int arr[x];
   arr[x-1]=3;
   printf("size: %d\n", sizeof(arr));
   return 0;
}
[/size]


程序输出为0, 而如果把
int x=0; 改为 int x;
即不进行初始化,那么sizeof 步骤时会段错误
这里也不明白,希望大家能帮忙看下,谢谢

作者: lotutu   发布时间: 2011-11-17