cの関数へのポインタとは何かを理解しようとしています。
関数へのポインターを呼び出す詳細なプロセスが必要なので、関数へのポインターをよりよく理解できました。
以下の私のコードがクラッシュせず、有線出力がある理由を誰かが説明できますか? 絞り込むために、コードをコンパイルしてコードを実行javap
する方法を説明できるようなものを探していますjdk
jvm
- void return と番号 14、15、または 16 の関係は何ですか。 (void 関数 return)
- 私の 2 番目のパラメーターにセキュリティ上の問題がありますか、それとも非 init 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