簡體   English   中英

使用函數通過指針傳遞用戶輸入不起作用

[英]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 = &num;
}

預先感謝您的任何提示或更正。

這里的主要問題是您忘記了在 C 中參數是按值傳遞的,並且包括指針。

該參數變量ninputFloat功能是本地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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM