あるアドレスの文字を変数に格納しようとしましたが、コンパイル エラーが発生しました (無効な型引数の単項 '*' (have 'int'))。
int address = 4000;
char character = (char) *address
このコードがポインターを逆参照して、文字をメモリ位置 4000 に格納しないのはなぜですか?どうすれば修正できますか? ありがとう。
構文的に、あなたが探している
char character = *(char*)address;
これが何か役に立つかどうかは別の問題です...
熟考すべきいくつかの問題:
int
すべての有効なアドレスを表すのに十分な幅がある場合とない場合があります (私のシステムではそうではありません)。ランダムなメモリアドレスをアドレス指定しようとして、それが機能することを期待することはできません。あなたのプログラムは、マップされていないメモリアドレスにアクセスする可能性があり、クラッシュしたり、後で多くの問題を引き起こしたりする可能性があります。
char *address = (char *)4000;
char c = *address;
#include <stdint.h>
intptr_t address = 4000;
char character = *((char*)address);
これを行う:
#include <stdint.h>
/* ... */
uintptr_t ip = 4000; // this is an integer
char character = * (char *)(ip);
char *address=(char*)4000;
char character = *address;
「4000」の内容は自己責任でお願いします