0

Cネオン組み込みでbmpファイルの解析に関するプログラムを作成しています。関数には、ソース ファイルの宛先を指す const int が必要ですが、inf fstream と fopen を使用して、ソースを指すファイル オブジェクトを取得します。では、それを const int ポインターに変換するにはどうすればよいですか

4

1 に答える 1

-1

これを試すことができます:

const int *intFile = (int *)fopen("path-to-file.bmp", "r");

次のように、キャストを使用して、ある型へのポインターを他の型へのポインターにいつでも割り当てることができます。

int i;
int  *ptrInt  = &i;        // this doesn't need a cast
char *ptrChar = (char*)&i; // this does need a cast

この場合、ptrCharは の「最初の」バイトを指していますi。この「最初の」バイトは、マシンがリトル エンディアンまたはビッグ エンディアンを使用しているかどうかに応じて、それぞれ LSB または MSB になります。

このような変換は、慎重に使用すれば非常に便利ですが、低レベルの概念が含まれ、安全ではない可能性があることに注意してください。

これで、常に同じ型の const ポインターに直接ポインターを割り当てることができます。

char c;
char *pc = &c;
const char *cpc = pc;

だから、書く必要はありませんconst int *intFile = (const int*) ...

最後の例では、const char *cpc手段cを介して変更することはできませんcpc。つまり、cpc「const char へのポインター」です。

*cpc   = 'H';   // error
cpc[0] = 'j'; // error
于 2012-08-04T07:29:00.683 に答える