You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:15:09