![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
C言語において、あるアドレスを指定して、その中に入っている値を表示する方法は
どのようにすればよいでしょうか。
これに関しては
http://oshiete1.goo.ne.jp/kotaeru.php3?q=377367
にありましたので、試してみましたが、
ptr = (unsigned char *)add ;の部分でセグメンテーションエラーになってしまいました。
No.2ベストアンサー
- 回答日時:
>add=0xad736;
>ptr=(unsigned char *)add;
>printf( "%lx",*ptr);
一昔前のOSなら、そういう事も可能だったのかもしれませんが
今のOSでは出来ません。
基本的に現在のOS(Fedoraを含むLinuxやWindows)では
アプリケーションが参照するメモリアドレスは
仮想メモリ空間のアドレスであって、実アドレスではないのです。
つまり0xad736というのはOSがそのアプリケーションに割り振った値では無いので
無効なアドレスというわけです。
実際試してはいませんが、Linux(Fedora)の物理メモリアドレス参照は
以下のページが参考になるかもしれません。
http://www-online.kek.jp/~yasu/Kenshu/linux-virt …
Windowsならこっち
http://homepage2.nifty.com/DSS/WinSys/Win/DevAdd …
他にも「物理アドレス 参照」などで調べると良いかもしれません。
有り難うございました。仮想メモリ空間のアドレスでしたか。
H8マイコンでのアドレス設定の方法を読んで、パソコンで試してみようと思ったのでした。
大変よくわかりました。
No.3
- 回答日時:
あなたにアクセスする権限がないアドレスを参照することは、
OSによって禁止されています。
#1の補足に書かれたアドレスには意味があるのですか?
一般的には、そのように直接アドレスを指定することは有り得ません。
単純にこういう使い方は、(意味は兎も角)ありですが。
#include <stdio.h>
int main(int argc, char ** argv)
{
char * p = argv[0];
printf("%p:%c\n", p, * p);
return 0;
}
>#1の補足に書かれたアドレスには意味があるのですか
適当な変数を格納した時のアドレスを表示させてところ、この値が出たので、この逆はできないかなぁと思ったのです。
>OSによって禁止されています。
有り難うございました
No.1
- 回答日時:
環境もわからないしどのようなプログラムかもわからないんですが, そこでセグメンテーションエラーが出るとは思えないなぁ.
この回答への補足
早速有難うございます。環境は、Fedora5でソースは下記のとおりです。如何でしょうか?
#include <stdio.h>
int main( void )
{
unsigned char *ptr;
unsigned long int add;
add=0xad736;
//scanf("%lx",&add);
ptr=(unsigned char *)add;
printf( "%lx",*ptr);
return 0;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
charからLPTSTRへの変換方法
-
'const char *' 型は 'char *' ...
-
C言語です
-
文字列から空白を取り除きたい...
-
switch文で文字を比較すること...
-
干支のプログラム
-
文字列ポインタを結合
-
charでの計算?
-
C言語について。
-
配列から指定するデータを取り...
-
recvfrom関数の戻り値がおかし...
-
error C2664
-
sprintfに同じ変数は使えるか
-
const char** p;のとき、free(p...
-
fgetsなどのときのstdinのバッ...
-
関数ポインタ配列の関数名を検索
-
RGBをCMYKに変換するプログラム
-
c言語プログラミング実行時エラ...
-
PING JPEGファイルのExif規格の...
-
C言語のポインターで詰まっている
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
C言語について。
-
charでの計算?
-
CStringをwchar_tに変換したい
-
charからLPTSTRへの変換方法
-
文字列から空白を取り除きたい...
-
C言語のfor文です。 繰り返しの...
-
atoi( ) の反対をやりたい
-
'const char *' 型は 'char *' ...
-
double型の値をchar配列に変換...
-
間接操作のレベルとは
-
テキストデータをそのままバイ...
-
型変換
-
3桁区切(コンマ)記号をつけ...
-
C言語のポインターで詰まっている
-
絶対パスからのファイル名の切...
-
str系関数を使わずに二つの文字...
-
配列をnビットシフトする
-
int main()の・・・
-
C言語の入力した文字を反転させ...
おすすめ情報