web-dev-qa-db-ja.com

Cプログラミング言語でポインタアドレスを手動で割り当てる方法は?

ポインタアドレスを手動で割り当てる方法(例:メモリアドレス0x28ff44)Cプログラミング言語で?

43
Irakli

このような:

void * p = (void *)0x28ff44;

または、char *

char * p = (char *)0x28ff44;

...等。

あなたが本当にあなたが何かを指しているのであれば、本当に変更するつもりはないので、constを追加してください:

const void * p = (const void *)0x28ff44;
const char * p = (const char *)0x28ff44;

...私はこれが何らかの「よく知られたアドレス」でなければならないと考えているので、それらは通常(常にではないが)読み取り専用です。

67
T.J. Crowder

コードは次のようになります。

int *p = (int *)0x28ff44;

intは、参照しているオブジェクトのタイプである必要があります。または、voidにすることもできます。

ただし、プログラムに属さないものにアクセスしようとしないように注意してください。

8
zsalzbank
int *p=(int *)0x1234 = 10; //0x1234 is the memory address and value 10 is assigned in that address


unsigned int *ptr=(unsigned int *)0x903jf = 20;//0x903j is memory address and value 20 is assigned 

基本的に組み込みプラットフォームでは、名前の代わりに直接アドレスを使用しています

2
kamal

書き込み:

int *p=(int *)0x1234 = 10;

一部のコンパイラでは無効です。次の2つの指示に分割する必要があります。

int *p=(int *)0x1234; *p = 10;

0
Phil