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