注册 登录
编程论坛 C++教室

数组的初始化,

未未来 发布于 2014-03-05 00:30, 543 次点击
程序代码:
#include<iostream>
using namespace std;
void iii(int x){

int d[x]={0};

}
int main(){
    int t=10;
iii(t);
return 0;

}

为什么这样初始化一个函数里面的数组不可以,
7 回复
#2
未未来2014-03-05 00:32
回复 楼主 未未来
报错:variable-sized object 'd' may not be initialized-
#3
fl89622014-03-05 04:57
#include<iostream>
using namespace std;
void iii(int x){

int *d={0};

}
int main(){
    int t=10;
iii(t);
return 0;

}
#4
wp2319572014-03-05 07:45
初始化应该由调用者完成
#5
rjsp2014-03-05 08:35
1. C++不支持变长数组(VLA)
   g++支持VLA,但这是非标准的
   在C++中应当用std::vector来替代VLA
2. 即使是C的VLA,也不支持"初始化操作"
#6
未未来2014-03-05 17:44
回复 5楼 rjsp
你是指在C++学习运用过程中尽量不用数组用vector吗。
#7
rjsp2014-03-06 08:20
以下是引用未未来在2014-3-5 17:44:27的发言:

你是指在C++学习运用过程中尽量不用数组用vector吗。

不是,能用 原生数组 或 std::array 的,就应该尽量用它们。
C++中没有VLA,所以在这种情况下(即无法使用使用 原生数组 或 std::array 的情况下),C++得用 std::vector
#8
未未来2014-03-06 23:53
回复 7楼 rjsp
受教了,
1