我试图更好地使用指针,而不是使用数组符号。所以我有一个函数来读取用户输入并返回一个指向该数组的指针。我能做到这样,它似乎确定工作:用指针输入用户输入
float *GetValues(float *p, size_t n)
{
float input;
int i = 0;
if ((newPtr = (float *)malloc(n * sizeof(float))) == NULL) {
cout << "Not enough memory\n";
exit(EXIT_FAILURE);
}
cout << "Enter " << n << " float values separated by whitespace: \n";
while (scanf("%f", &input) == 1) {
p[i] = input;
i++;
cout << *p;
}
return p;
}
不过,如果我这样做:
float *GetValues(float *p, size_t n)
{
float *newPtr;
float input;
if ((newPtr = (float *)malloc(n * sizeof(float))) == NULL) {
cout << "Not enough memory\n";
exit(EXIT_FAILURE);
}
cout << "Enter " << n << " float values separated by whitespace: \n";
while (scanf("%f", &input) == 1) {
*newPtr++ = input;
}
return newPtr;
}
我得到的只是0进入页。这是为什么?
此外,我必须在这里分配内存大小为n的数组吗?我首先尝试用上面的方法使用指针,而不是分配内存,但只是设置p =输入,我得到垃圾值。谢谢!
编辑:对不起,我分配了一个新的ptr,并且像你说的那样返回了错误的。我只是试图将数字输入到指针中,然后将其显示在屏幕上,并且没有注意返回类型,并且当我输出0时,输出为0。
你传递'p',你回'p',可以分配别的东西叫'newPtr',什么也不做它......它可能是更容易,如果你重新开始,只有把东西放到了需要在那里解决你的问题的代码。 – 2010-02-20 20:20:32