[英]Using function to pass the user input via pointers not working
我試圖從用戶輸入中獲取輸入,並使用指針傳遞給程序主程序。 即使我嘗試了一些替代方案,該值似乎也沒有通過。
例如,如果我輸入 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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.