【发布时间】:2011-04-23 15:01:31
【问题描述】:
我在一个函数中创建了一个可变长度数组,但是我需要在第二个函数中引用这个数组。当我将声明放在 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;
}
【问题讨论】:
-
C++ 没有可变长度数组。也许您正在使用 C?
-
C99 确实如此,但我很想说他指的是别的东西。 @Anteater:我们可以看看代码示例吗?
-
“我在开发它仍然很草率。”首先,如果你正确地格式化你的代码,即使是在开发它的时候,它也可以帮助你显着减少你花在调试上的时间。其次,当您在发布问题之前没有花两分钟时间来格式化您的代码并使其易于阅读时,这表明对这里想要帮助回答您问题的人完全缺乏尊重。
-
好的,我会清理它,我的意思是在许多测试行和最终脚本中不会出现的东西中的草率。
-
这一行
name[ns + 1];在 C++ 中格式不正确。您应该使用std::vector,VLA 不在 C++ 中。您的编译器允许它作为扩展。
标签: c++ arrays function global-variables