C++指向関数のポインタインスタンス解析

1352 ワード

通常、C++関数ポインタは、オブジェクトを指すポインタではなく、関数を指すポインタです.他のポインタと同様に、関数ポインタも特定のタイプを指します.関数タイプは、関数名に関係なく、戻りタイプとパラメータテーブルによって決定されます.
定義:

char (*fP)(char,int); 

割り当て:

char function(char i,int j)
{

} 

fp=function; 呼び出し(*fp)(10100);

type char (*FUN)(char,int);//     
FUN fp ;//  fp         

volatileの使い方と役割:
constはvolatileとは逆に、volatileはメモリの数値がいつでも変更される可能性があることを示します.

uchar a,b,c 
a=5; 
b=a; //b=5 
c=a; //c=5 
volatile uchar a,b,c 
a=5; 
b=a; //b    
c=a; //c    


例えば、モノリシックマシンのP 0ポートは以下のように初期化される.

P0=0x0000 0001 
a=p0; //     P0        , a=0x1111 1111,   0x0000 0001。      


レジスタの対応するアドレスを定義するときにvolatileによく使用されます.

#define rGPCCON  (*(volatile unsigned *)0x56000020)    
#define rGPCDAT  (*(volatile unsigned *)0x56000024) 


プロジェクトにファイルが多い場合は、グローバル変数をできるだけ少なくし、関数呼び出し形式を直接利用する必要があります.
単一ファイル:static char i;静的変数を定義し、他のファイルで変数値が予期せぬ変更にならないようにします.

char fun(void)
{ 
  return(i); 
} 

外部呼び出しグローバル変数形式を直接使用する:extern int i;このような欠点は、ファイルが多い場合にグローバルな変数の名前が変更される可能性が高いという問題があり、修正するのは面倒かもしれません.