2016-05-09 22 views
-5

の「アスタリスク型アスタリスク」の意味私は見回しを試みましたが、これに対する答えを見つけることができませんでした。私はダブルアスタリスク**を使用するときに何かを見つけましたが、私がこのケースに当てはまるかどうかはわかりません。私は私には少し外国人に見えた組み込みシステムのコードに遭遇してきたC:*(volatile int *)foo

port0 = *(volatile int *)(0x1C002100) 

この操作がやっていることは、それがそのアドレス0x1C002100あるGPIOポートを読み込むことです。しかし、これらすべてのアスタリスクとの取引は何ですか?

port0 = *0x1C002100 

は、彼らがポインタ型鋳造のいくつかの種類をやっているので、私たちは2つのアスタリスクを使用します。

私のようなこの何かを書かれているのでしょうか?それは私の最高の推測だろう。ご協力ありがとうございました !

+1

C !!!!! –

+0

そのコードが実際に 'int'のような標準の整数型を使用すると、それは実際には悪いコードであり、コードの品質について何か(肯定的ではない)を伝えます。固定幅タイプを使用していると修正されます。 'uint16_'。 – Olaf

答えて

2

式を見てみると、まず整数定数をポインタに変換し、そのポインタを参照して整数を求めます。第二は、間接参照演算子であり、

int *p = (volatile int *)(0x1C002100); 
int n = *p; 
port0 = n; 

最初*ポインタの種類を示す:それは本質的に同じです。

ただし、2行目は無効なCコードです。整数を逆参照できないためです。

port0 = *0x1C002100; 
関連する問題