2

あるアドレスの文字を変数に格納しようとしましたが、コンパイル エラーが発生しました (無効な型引数の単項 '*' (have 'int'))。

int address = 4000;
char character = (char) *address

このコードがポインターを逆参照して、文字をメモリ位置 4000 に格納しないのはなぜですか?どうすれば修正できますか? ありがとう。

4

5 に答える 5

5

構文的に、あなたが探している

char character = *(char*)address;

これが何か役に立つかどうかは別の問題です...

熟考すべきいくつかの問題:

  1. intすべての有効なアドレスを表すのに十分な幅がある場合とない場合があります (私のシステムではそうではありません)。
  2. プロセスのメモリ マップのアドレス 4000 にあるものをどのように知ることができますか?
于 2013-01-30T21:33:25.257 に答える
2

ランダムなメモリアドレスをアドレス指定しようとして、それが機能することを期待することはできません。あなたのプログラムは、マップされていないメモリアドレスにアクセスする可能性があり、クラッシュしたり、後で多くの問題を引き起こしたりする可能性があります。

char *address = (char *)4000;
char c = *address;
于 2013-01-30T21:33:54.300 に答える
0
#include <stdint.h>
intptr_t address = 4000;
char character = *((char*)address);
于 2013-01-30T21:35:46.390 に答える
0

これを行う:

#include <stdint.h>
/* ... */
uintptr_t ip = 4000;                 // this is an integer
char character = * (char *)(ip);
于 2013-01-30T21:33:48.077 に答える
0
char *address=(char*)4000;
char character = *address;

「4000」の内容は自己責任でお願いします

于 2013-01-30T21:38:11.237 に答える