[英]Can anyone please explain the output of C program?
我在一本書中發現了這個問題。
問題:
以下程序的output是什么?
#include <stdio.h>
int fun(int,int);
typedef int(*pf) (int,int);
int proc(pf,int,int);
int main()
{
printf("%d\n",proc(fun,6,6));
return 0;
}
int fun(int a,int b){
return (a==b);
}
int proc(pf p,int a,int b){
return ((*p)(a,b));
}
此代碼在運行時打印出 1。
我試着理解它,但沒有,它沒有用。 這個程序是怎么回事,為什么 output 1?
提前致謝。
proc
通過 function 指針間接調用fun
。 fun
接收到的 arguments 又是6
和6
,相等運算符的計算結果為值為1
的int
,因為它們相等。 如果它們不相等,則==
運算符將產生0
。
在 main 第一行
printf("%d\n",proc(fun,6,6));
正在調用 proc,它采用參數 function 指針和兩個 integer 值。 Function 指針 pf 定義為typedef int(*pf) (int,int);
這一行printf("%d\n",proc(fun,6,6));
將調用 function 定義為:
int proc(pf p,int a,int b){
return ((*p)(a,b));
}
現在在這個 function pf 中持有指向 function fun 的指針。 這將導致調用 function 函數,它返回 a 和 b 的值是否為真。 由於您已經通過 6,6 作為 arguments 結果將為真,這就是為什么您得到 1 作為答案的原因。
int fun(int,int);
function 接受 2 個 int arguments 並返回一個 int
typedef int(*pf) (int,int);
pf 是一個 function 指針,它存儲一個 function 的地址的地址,它以兩個 int 作為它的 ags 並返回一個 int
int proc(pf,int,int);
proc 是一個 function,它接受 3 個參數,首先是一個 function 指針,指向上面的 function 和兩個 integer 參數。
proc(fun,6,6);
上面的語句用兩個參數 6 和 6 調用 fun,如果它們相等則返回 true,結果是 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.