用C ++初始化数组

时间:2009-09-01 21:45:00

标签: c++ arrays

我正在尝试初始化数组中的最后一个元素

  

int grade [10];

到7年级但似乎无法正常工作

我正在使用C ++ btw

5 个答案:

答案 0 :(得分:8)

如果您想根据定义初始化它们:

int grades[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 7 };

如果你想在之后初始化:

int grades[10];
grades[9] = 7;

但是,请注意,0 .8等级仍然是未初始化的,并且很可能是垃圾值。

答案 1 :(得分:4)

还有一件事,如果只初始化第一个元素(如果指定了显式数组大小)或更短的初始化列表,那么未指定的元素将填充0.例如。

int grades[10] = {8}; //init with one element

与:

相同
int grades[10] = { 8, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

int grades[10] = { 1, 9, 6, 16 }; //or init with a shorter than array size list with a minimum of 1 element

与:

相同
int grades[10] = { 1, 9, 6, 16, 0, 0, 0, 0, 0, 0 };

我觉得初始化一个0值的数组很方便。

float coefficients[10] = {0.0f}; //everything here is full of 0.0f

答案 2 :(得分:4)

当你写

之类的东西时
int a[5] = {0};

它将整个数组设置为零

int a[5] = {3};

只设置第一个元素,其余可以是任何东西(垃圾值);

如果您想要将整个数组设置为某个值,那么您可以选择

std :: fill()

类似这样的事情

std::fill(arr, arr+100, 7); // sets every value in the array to 7

并且如果有字符数组您可以随时使用memset函数

答案 3 :(得分:1)

最后一个元素是grades[9],因为C ++中的数组是从零开始的(例如grades[0]grades[9]是10个元素)。这就是你在做什么?

您可能需要从成绩中减去一个作为下标值,或者将范围设置为一个。

答案 4 :(得分:1)

请记住,包含10个元素的数组将具有等级[0]到成绩[9],等级[10]是错误。