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

C++数组输出异常:输入完成后程序无输出直接终止

问题分析与解决

核心问题

你创建了obj2对象来接收用户输入的数组数据,但最终调用打印函数print_lista()的是obj3——一个通过默认构造函数生成的空对象。obj3的k变量未初始化,numbers数组也没有任何有效数据,所以程序不会输出内容。

另外,默认构造函数没有初始化k值,未初始化的整型变量值是不确定的,可能引发不可预料的行为。

修复方案

直接使用存储了输入数据的obj2调用打印函数即可,无需创建空对象obj3。

修正后的main函数代码:

int main()
{
 cout << "Enter how many numbers you want to enter" << endl;
 clist obj;
 cin >> obj.i; 
 clist obj2(obj.i);
 // 直接用存储了数据的obj2调用打印函数
 obj2.print_lista();
 return 0;
}

额外优化建议

  • 把类的成员变量设置为私有(private),通过公共接口访问,符合封装原则。
  • 在默认构造函数中初始化k为0,避免未初始化的变量问题。
  • 避免使用类的成员变量作为循环计数器(比如times),推荐在函数内部声明局部变量,防止成员变量被意外修改。

优化后的完整示例代码:

#include <iostream>
using namespace std;

class clist {
private:
 int k;
 double numbers[1000];
public:
 clist () : k(0) {}
 clist(int count) : k(count) {
     cout << "Enter the numbers" << endl;
     for (int times = 0; times < k; times++) {
         cin >> numbers[times];
     }
 }
 void print_lista() {
     for (int times = 0; times < k; times++) {
         cout << numbers[times] << "\t" << endl;
     }
 }
};

int main()
{
 cout << "Enter how many numbers you want to enter" << endl;
 int count;
 cin >> count; 
 clist obj(count);
 obj.print_lista();
 return 0;
}

内容的提问来源于stack exchange,提问作者chami

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:15:37