我想了解什麼是指向c中函數的指針。理解調用指向函數的指針
我想要一些調用函數指針的詳細過程,因此,我可以更好地理解指向函數的指針。
有人可以解釋爲什麼我的代碼下面不會崩潰,並有一些有線輸出? 要縮小,我正在尋找類似javap
這可以解釋如何jdk
編譯 我的代碼和jvm
我的代碼運行
- 什麼是void返回和號碼14,15或16 的關係(無效函數返回)
- 是否有任何安全問題,我的第二個參數或是非相同的非初始化val?
test.c的
#include <stdio.h>
#include <stdlib.h>
static void f(int x, int y){
printf("x = %d \n", x);
printf("y = %d \n", y);
}
typedef int (*FUNC)(int);
int main(void){
long int addr = (long int)f;
printf("%d \n", (int)((FUNC)addr)(1));
return 0;
}
在Mac OS輸出編譯i686-apple-darwin11-llvm-gcc-4.2
x = 1
y = 1479046720
16
指向一個功能僅僅是一個存儲在一個變量函數的引用方式,讓您可以在功能再打。因爲它是一個變量,而不是一個固定的調用,所以可以在運行時更改要調用的函數,但就是這樣。沒有涉及的魔法。 –
看到http://stackoverflow.com/questions/840501/how-do-function-pointers-in-c-work – farmer1992