アプリ版:「スタンプのみでお礼する」機能のリリースについて

ちょっと袋小路にはまり込んでしまいまして…。どなたか助け舟お願いします。。

例えば。。

int i;
int *p;

p = &i;

printf("%d", *add);

とすれば、iのアドレスの中身、つまりi自身を出力できるわけですが、

p = (絶対アドレス);

と、ダイレクトに指定することはできません。
私がやりたいのは、簡単には、scanfである値を入力したら、
その値をアドレスとするところの中身を出力するということです。

例えば、scanfで取り込んだ値がc7f4ac(まあ…例えばの値です)として、
c7f4ac番地の中身を表示させるということです。

このようなことはできますでしょうか?
なにとぞお願い致します。m(_ _)m

A 回答 (1件)

アドレスによってはアクセスバイオレーションかセグメンテーションフォルトを起こしてプログラムが死ぬことがありますが、それを覚悟の上なら



unsigned char *ptr ;
unsigned long add ;

scanf("%lx", &add) ;
ptr = (unsigned char *)add ;
printf("%x", *ptr) ;

注意点
1.任意のアドレスを参照するなら1バイト単位にするべき
2.intとポインタ変数のサイズが同じでない場合があるので、ポインタに代入するならlong

動作環境によって違いますが、アドレスによってはアクセスしたらイキナリわけのわからない動作が怒る場合があるのでやらない方がいいんですけど…
    • good
    • 0
この回答へのお礼

なるほど、そういうことでしたか。
私の使う環境ではこれで動作しそうです。
的確なお答えありがとうございました。
大変助かりました。

お礼日時:2002/10/10 20:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!