2
我的编译器在Veccreator函数中初始化浮点数组时出现运行时错误。我在这里只是发布我的代码样本的示例。无法使用{0}初始化float数组
#include<iostream>
using namespace std;
#define SIZE 1000
class Vector
{
private:
float vecarray[SIZE];
public:
void VecCreator(int dimension)
{
vecarray[SIZE]= { 0 };
cout << "Enter " << dimension << " digits" << endl;
for (int i = 0; i < dimension; i++)
{
cin >> vecarray[i];
}
}
};
int main(void) {
Vector obh;
obh.VecCreator(2);
}
但它正常工作与此:`
#include<iostream>
using namespace std;
#define SIZE 1000
class Vector
{
private:
float vecarray[SIZE]= {0};
public:
void VecCreator(int dimension)
{
cout << "Enter " << dimension << " digits" << endl;
for (int i = 0; i < dimension; i++)
{
cin >> vecarray[i];
}
}
};
int main(void) {
Vector obh;
obh.VecCreator(2);
}
请告诉我,为什么第一个代码给错误。
搜索并阅读关于*构造函数初始值设定项列表*。 –
为了帮助人们回答您的问题,您需要更加具体地了解错误。请[编辑]您的帖子以合并您从[mcve]中获得的确切错误(最好使用复制+粘贴以避免转录错误)。 –
这是一个缓冲区溢出。在C中,数组索引是从零开始的。你的表达式vecarray [SIZE] = 0'指定一个超过数组最后一个索引的值,即SIZE-1。 –