我正在尝试初始化数组中的最后一个元素
int grade [10];
到7年级但似乎无法正常工作
我正在使用C ++ btw
答案 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]是错误。