如何解决使用函数通过指针无法传递用户输入
我正在尝试从用户输入中获取输入,并使用指针将其传递给程序main。甚至在我尝试了一些替代方法之后,价值似乎都没有实现。
例如,如果我输入0.0001,则当我返回到主函数时,它将输出0.0000
#include <stdio.h>
void inputFloat(float *n);
int main() {
float *number;
printf("Insert number: ");
inputFloat(number);
printf("%1.4f",*number);
return 0;
}
void inputFloat(float *n){
float num;
while (scanf("%f",&num) != 1 || num < 0) {
scanf("%*[^\n]%*c");
printf("insert positive: ");
}
printf("%1.4f\n",num);
n = #
}
在此先感谢您的提示或修正。
解决方法
这里的主要问题是您忘记了C语言中的参数是通过值传递的,并且其中包含指针。
n
函数中的参数变量inputFloat
是inputFloat
函数的局部变量,一旦函数返回,对它的所有修改(如赋值)都将丢失。
我相信您要尝试的是通过引用模拟传递,的确通过使用指针来完成。但是,然后您使用地址运算符&
将指针传递给普通变量:
float number; // Not a pointer
inputFloat(&number); // Pass a pointer to the variable number
要使用此指针并设置其指向的原始变量的值,您需要取消引用指针:
void inputFloat(float *n)
{
// ...
*n = num; // Copy the value of num to the location where n is pointing
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。