我想从用户输入中读取一些数字,然后在每一行显示5。我的代码是这样的:
#include <iostream>
using namespace std;
const int INPUT_SIZE = 7;
void printValues(int *b) {
int counter = 0;
while (counter < INPUT_SIZE) {
cout << *(b+counter) << " ";
if ((counter + 1) % 5 == 0 && counter>0) {
cout << endl;
}
counter++;
}
cout << endl;
system("pause");
}
int * readValues() {
int b[INPUT_SIZE];
for (int i = 0; i < INPUT_SIZE; i++) {
cout << "Enter element on position: " << i << ": ";
cin >> b[i];
}
return b;
}
int main() {
int* b;
b = readValues();
printValues(b);
return 0;
}
但是,当我尝试打印它们时,我会得到一些奇怪的数字,我认为它们是内存位置。如何打印数组以及如何编写返回数组的函数?我对指针的经验很少,因为到目前为止我只用Java编码。 非常感谢。
答案 0 :(得分:2)
您的数组b
是函数readValues
内的局部变量。
当readValues
退出时,阵列将被销毁。
函数返回后,从readValues
返回的指针无效。尝试使用它(例如将其传递给printValues
)是不正确的(正式来说,它会导致未定义的行为)。
您可能会因b
中的指针变量main
与b
中的数组readValues
一样,给同名main
造成一些混淆。它们完全是独立的变量。
如果要在两个函数中使用相同的数组,则需要确保它位于范围内,以确保它只要您需要它就可以存在。这可以通过使其成为apply
中的局部变量。