簡體   English   中英

在C中分配給變量的函數

[英]Function assigned to a variable in C

我做了一個測試:

test1.c

#include <stdio.h>
int main () {
   getchar();
}

test2.c中

#include <stdio.h>
int main () {
   int c;
   c = getchar();
}

test1.c和test2.c都產生相同的結果,等待用戶鍵入內容。

我的問題:

  1. 在test2.c中,我僅將getchar()函數分配給變量'c',而從不調用/調用該函數,那么為什么要調用它呢? 我說它被調用的原因是因為當我運行它時,它產生的結果與test1.c相同。

  2. 我認為只有在調用/調用函數時才調用該函數,就像在test1.c中一樣,我調用getchar()函數。 但是在test2.c中,我從不調用該函數,僅將getchar()函數分配給變量'c'

在test2.c中,我僅將getchar()函數分配給變量c ,並且從不調用/調用該函數,那么為什么要調用它呢?

Ç使一個函數名,這是之間的差getchar沒有括號,和一個函數調用表達式,為getchar()與括號中。 您的代碼未將函數分配給變量; 它將函數調用產生的結果分配給變量c

我以為一個函數只有在我們調用/調用它時才被調用,就像在test1.c

兩次調用在test1.c與test2.c中的區別在於,test1.c使用一條語句調用該函數,而test2.c使用一個表達式調用該函數。 不過,這兩個程序都確實調用了一個函數。

在C語言中,名稱getchar后面的getchar括號和右括號表示調用與名稱getchar關聯的函數。 因此,在兩個代碼段中,您實際上都在調用該函數。

如果您想將函數“分配”給變量c ,它將看起來像這樣:

int (*c)() = &getchar;

上面您真正要做的是獲取getchar的地址並將其分配給函數指針c

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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