[英]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都產生相同的結果,等待用戶鍵入內容。
我的問題:
在test2.c中,我僅將getchar()函數分配給變量'c',而從不調用/調用該函數,那么為什么要調用它呢? 我說它被調用的原因是因為當我運行它時,它產生的結果與test1.c相同。
我認為只有在調用/調用函數時才調用該函數,就像在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.