我需要创建一个长度未知的布尔数组传递参数。所以,我有以下代码:在C++中动态布尔数组的默认值
void foo (int size) {
bool *boolArray = new bool[size];
for (int i = 0; i < size; i++) {
if (!boolArray[i]) {
cout << boolArray[i];
}
}
}
我认为一个布尔阵列用假值初始化...
然后,如果我在Eclipse中运行(在Ubuntu)的代码,它工作正常对我来说,函数打印所有的值,因为!boolArray [i]返回true(但值不是错误的值,它们是垃圾值)。如果我在Visual Studio中运行它,这些值也是垃圾值,但函数不打印任何值(因为!boolArray [i]返回false)。为什么默认情况下数组值不是假值?!?为什么!boolArray [i]在Visual Studio中返回false,但它在Eclipse中返回true?!?
我看了这个问题:Set default value of dynamic array,所以如果我改变下面的代码,它也适用于我(在Eclipse和Visual Studio中)!但我不知道为什么。
void foo (int size) {
bool *boolArray = new bool[size]();
for (int i = 0; i < size; i++) {
if (!boolArray[i]) {
cout << boolArray[i];
}
}
}
对不起,我的英文不好!
在此先感谢!
@ShafikYaghmour其实,我有两个问题...这回答后一个问题,但不为什么!boolArray [I]在Visual Studio返回false,但它在Eclipse返回true ... – cynthux
它是未定义行为来使用一个未初始化的变量,所以它没有真正的说,但我不认为这方面使它不是一个重复。 –
@ShafikYaghmour谢谢! – cynthux