簡體   English   中英

任何人都可以解釋 C 程序的 output 嗎?

[英]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 又是66 ,相等運算符的計算結果為值為1int ,因為它們相等。 如果它們不相等,則==運算符將產生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.

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