我在一个函数中创建了一个可变长度数组,但是我需要在第二个函数中引用这个数组。当我将声明置于main()之上时,问题就出现了,因为它的长度尚未定义,我的编译器生气了。
人们通常如何解决这个问题?
修改
到目前为止,这是我的代码。
我需要使数组的 name [] midterm []和final [] 全局。他们全都在 student_input()。
#include <iostream>
using namespace std ;
void student_input();
void student_output();
int i , ns ;
main(){
int width,height,mult;
cout << "Enter the number of students:" << endl;
cin >> ns;
i = 0 ;
while( i < ns){
i = i + 1 ;
student_input();
}
i = 0 ;
while( i < ns){
i = i + 1 ;
student_output();
}
system("pause");
}
void student_input() {
int si_i,si_midterm,si_final, midterm[ns + 1], final[ns + 1];
string si_name, name[ns + 1];
cout << endl << endl << "\t----- Student " << i << " -----" << endl << endl << endl;
cout << "Enter name for student " << i << ":\t"<< endl;
cin >> si_name;
name[i] = si_name ;
cout << "Enter midterm score for student " << i << ":\t"<< endl;
cin >> si_midterm;
midterm[i] = si_midterm ;
cout << "Enter final exam score for student " << i << ":\t"<< endl ;
cin >> si_final;
final[i] = si_final ;
cout << endl << endl;
si_i = 0 ;
while (si_i < 7){
si_i = si_i + 1;
cout << "Enter lab " << si_i <<" for student " << i << ":\t"<< endl;
}
cout << name[i] << endl << midterm[i] << endl<<final[i] << endl;
return;
}
void student_output() {
cout <<"hello! "<< endl;
return;
}
答案 0 :(得分:13)
C ++不支持可变长度数组;要么你没有使用C ++,要么你正在使用特定于实现的语言扩展。
在C ++中,您应该使用std::vector
作为动态大小的数组。
如果您需要从多个功能访问它,您可以:
vector
的函数作为参数引用它,或者vector
成为一个类成员变量,并使所有需要访问它的函数成为该类的成员函数。哪一个更有意义取决于你正在尝试做什么。
答案 1 :(得分:3)
std::vector
出了什么问题?你不能在C ++中使用VLA(g ++虽然提供了它作为扩展)。
答案 2 :(得分:1)
查看向量,因为虽然你可以在c中,但在标准c ++中,没有办法使用可变长度数组。
另外,请查看除了流血之外的新IDE,例如Code :: Blocks,或者必要时,至少比流血更新版本的Dev c ++。
自2005年以来,Dev-C ++尚未更新,目前尚未更新 保持。该软件非常多。在我写作的时候 有340个已知错误永远无法修复。
很难获得帮助,因为编程社区已经转向更新的软件。
Dev-C ++缺乏更现代化解决方案中的功能。码 完成,intellisense和适当的调试设施(其中 其他)没有提供。这些工具可以大大改善 有经验的程序员的工作流程和效率,并可能有助于 学习初学者。
错误消息和解决所需的步骤 与更现代的解决方案相比,它们的记录很少 因为大多数程序员都可以从Dev-C ++开始 很难(如果不是不可能)找到能够帮助你的人。 有些问题可能根本无法解决。编译器 Dev-C ++中包含的内容非常过时,并且有错误。过时了 编译器可能导致错误和低效的代码,并可能是有害的 到初学者的学习过程。
- 醇>
提供的“devpack”系统 现代图书馆不再支持。使用外部库 在Dev-C ++中,对于初学者来说,这可能是一个令人困惑和困难的过程 期待这个简单的系统为他们处理它。
注意:初学者没有直接指向你,这是从这里得到的:http://clicktobegin.net/programming/why-you-shouldnt-use-dev-c/