下面的C++代码能编译么?
# include
# 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));
返回0;
}
其实可以用g++编译。
输入10,返回数组大小=40
输入20,返回数组大小=80
输入-1,返回数组大小=-4!!
问题:
1。Examda提示:这种做法符合C++标准吗?甚至sizeof也变成了运行时计算
2。这个数组的空空间应该分配在堆上,而不是堆栈上。g++做了什么?
0条评论