【发布时间】:2017-03-01 12:44:49
【问题描述】:
我正在尝试以下代码:
int main() {
int x[10] ;
int a[] = {1,2,3,4,5} ;
int n ;
int b[n] ;
//int c[] ; gives compilation error
cout<<sizeof(x)<<endl ; //prints 40
cout<<sizeof(a)<<endl ; //prints 20
cout<<sizeof(b)<<endl ; //prints 4
}
现在我的问题是当我定义b 时究竟会发生什么。
我试图阅读类似问题的答案,但没有得到满意的答复。
因为数组是静态创建的,所以在声明它们时必须给出大小。那为什么b 的声明是有效的。 sizeof(b) 是否表示这只是被视为int pointer
【问题讨论】:
-
int 的默认值为零,这就是它有效的原因。
-
可变长度数组不是 C++ 标准的一部分。这不是一个静态数组。
-
@VikramSingh:int 的默认值是垃圾。 不 0
-
题目和题目有什么关系?
标签: c++ arrays initialization sizeof