(我是编码新手) 我正在尝试将数组元素自身替换为1,但似乎无法正常工作。在下面,我尝试替换第三个元素:
int l=5;
int histogram[l];
histogram[l]={0};
histogram[2] = histogram[2] + 1;
它给我以下错误;
预期“;”表达后
直方图
答案 0 :(得分:1)
首先,@ Elias已将数组histogram
的大小定义为5,并将histogram [5]初始化为0。但是任何数组的最后一个索引是size-1...(size minus one)
,因为数组索引从零开始而不是一开始。
其次,您需要先将整个histogram[]
数组从histogram[0]
初始化为histogram[4]
,然后才能进行任何算术运算(如加或减)。在您的代码片段中,您甚至在将histogram[2]
初始化为任何值之前都尝试将其递增1。
所以试试这个...
int len = 5, i = 0;
int histogram[len];
for(i = 0; i < len; i++) {
histogram[i] = 0;
}
histogram[2] = histogram[2] + 1; //can also use histogram[2] += 1; or histogram[2]++;
答案 1 :(得分:0)
int histogram[l];
不是C ++,而是gcc扩展名。
histogram[l]={0};
是未定义的行为,您正在访问数组末尾的内容。无法分配 C样式数组的所有元素。您似乎对 initialise histogram
语法感到困惑,该语法仅适用于声明。
现代C ++避开了C样式的数组。如果您想要一个恒定的大小,请使用
std::array<int, 5> histogram = {};
或者如果您想要基于运行时变量的大小,请使用
std::vector<int> histogram(l, 0);