如何使用for循环创建一个函数,以将给定范围的数字存储到数组中,然后在主程序中调用该函数并打印出数组中存储的元素?
int main ()
{
testing(array, 20);
}
int testing(int array[], int k)
{
for (int i = 0; k < 20; i++)
{
array[k] = i;
k++;
}
for (int j = 0; j < 20; j++)
{
cout << array[j] << endl;
}
}
我得到“测试必须返回值”的错误,我知道我应该具有return var;例如。但是,我不知道如何返回给定元素的数组以使用for循环打印出所有元素。
答案 0 :(得分:1)
您的功能和循环结构未精心设计。您可以使用指针,而不必返回数组。 我认为这是您想要做的:
#include <iostream>
void testing(int* a, int k)
{
for (int i = 0; i < k; i++)
a[i] = i;
}
int main()
{
int a[20];
testing(a, 20);
// you can see that a's elements have changed outside the main (in testing)
for (int j = 0; j < 20; j++)
std::cout << a[j] << "\n";
return 0;
}
答案 1 :(得分:0)
您似乎从未执行过第一个循环。您的第一个循环的停止条件是k < 20
,但是k已经是20。
然后在第二个循环中,数组仅打印出先前保存在那些内存位置的垃圾。
我认为您的意思是:
for (int i= 0; i < k; i++) {
array[i] = i;
}
for (int j = 0; j < k; ++j) {
cout << array[j] << endl;
}
如果要在main
中打印数组,则需要通过传递指向数组而不是数组本身的指针来稍微更改函数。
此外,您的main
函数从未初始化过要传递给函数的数组。
int main (void) {
int a[20];
testing (a, 20);
return 0;
}
最后,将testing
函数的返回类型设置为void
。
void testing (int array[], int k);
总而言之,它应该看起来像这样:
#include <iostream>
using namespace std; // I don't recommend doing this
void testing (int * array, const int k);
int main (void) {
const int size = 20;
int a[size] = {0};
testing (a, size);
for (int i = 0; i < size; ++i) {
cout << a[i] << endl;
}
return 0;
}
void testing (int * array, const int k) {
for (int i = 0; i < k; ++i) {
array[i] = i;
}
}