C++中存储10个整数到数组遇问题,请求排查代码错误
你的C++数组操作问题分析与修正
嘿,我帮你找出代码里的几个关键问题,这些就是导致异常和不符合预期的原因:
1. 数组下标越界(最核心的异常原因)
在getData函数里,你写了std::cin >> intArray[10];,但数组的下标是从0开始的,float intArray[10]的有效下标范围是0~9。访问intArray[10]属于数组越界操作,这会触发C++里的「未定义行为」——比如程序崩溃、内存数据乱码,这就是你遇到异常的直接原因。
你应该把这里改成std::cin >> intArray[i];,用循环变量i来逐个遍历数组的合法位置。
2. 数组打印方式错误
printData函数里的cout << intArray;只会输出数组的首内存地址,而不是数组里存储的具体数值。想要打印数组内容,必须通过循环遍历每个元素:
for (int i = 0; i < 10; i++) { cout << intArray[i] << " "; } cout << endl;
3. 函数声明与定义的一致性问题
你声明的getData函数是int getData(float intArray[10]);,但定义时写成了int getData(float intArray[])——虽然C++里数组参数会自动退化成指针,这两种写法语法上都能通过,但保持声明和定义的一致性会让代码更易读。另外,这个函数的返回值1完全没有被使用,改成void类型会更合理。
4. 类型匹配的小建议
你提到要存入「整数」,但代码里用了float类型的数组。如果确实只需要存储整数,建议把数组类型改成int,这样更贴合你的需求(当然用float也能存整数,只是没必要)。
修正后的完整代码
#include <iostream> using namespace std; // 统一函数声明,改为void返回值 void getData(float intArray[10]); void printData(float intArray[10]); int main() { float myArray[10]; getData(myArray); printData(myArray); cin.get(); cin.ignore(); return 0; // 建议补充main函数的标准返回值 } void getData(float intArray[10]) { for (int i = 0; i < 10; i++) { std::cout << "Enter a number:"; // 使用循环变量i作为合法下标 std::cin >> intArray[i]; } } void printData(float intArray[10]){ // 循环遍历输出每个数组元素 for (int i = 0; i < 10; i++) { cout << intArray[i] << " "; } cout << endl; }
内容的提问来源于stack exchange,提问作者Apollo503
相关产品推荐
相关产品推荐

