下面的C++代码能编译么?
来源:优易学  2011-12-10 17:23:11   【优易学:中国教育考试门户网】   资料下载   IT书店
  #include <stdio.h>
  #define NUM getnum()
  int getnum()
  {
  int x = 0;
  scanf("%d", &x);
  printf("%d\n", x);
  return x;
  }
  int main(char** argc, int argv)
  {
  int array[NUM];
  printf("array size =%d\n",sizeof(array));
  return 0;
  }
  在g++中居然可以编译。
  输入10,返回array size=40
  输入20,返回array size=80
  输入-1,返回array size =-4!!
  问题:
  1.Examda提示: 这样的做法符合C++标准么?连sizeof成了运行期计算
  2.这个array的空间应该分配在heap上,而不是stack上。g++做了什么手脚?

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训