dポイントプレゼントキャンペーン実施中!

配列の先頭アドレスをunsigned long型で取得するにはどうしたら良いでしょうか?

下記だとダメですよね?

char a{4} = [0, 1, 2, 3];
unsigned long adr;

adr = (usigned long)&a[0];

よろしくお願いします。

A 回答 (3件)

unsigned longがpointerを表す型であるというシステムなら、


adr = (unsigned long)a;
とすれば行けるはずです。もちろん、一般的には下記です。
char* adr;
adr = a;
&a[0]はおかしいです。aで配列の先頭アドレスを表します。
a[0]がchar型のデータ0を表しますから、このアドレスを取
り出すということはあり得ません。

この回答への補足

回答ありがとうございます。

> unsigned longがpointerを表す型であるというシステムなら、
> adr = (unsigned long)a;
> とすれば行けるはずです。
VisualStduio2008で実行してみましたが、aのアドレス情報取得できませんでした。。。


> &a[0]はおかしいです。aで配列の先頭アドレスを表します。
> a[0]がchar型のデータ0を表しますから、このアドレスを取
> り出すということはあり得ません。
おかしいでしょうか?
a[0]のデータのアドレスを取得=配列の先頭アドレスの意味になりませんか?

補足日時:2009/11/30 00:21
    • good
    • 0

>VisualStduio2008で実行してみましたが、aのアドレス情報取得できませんでした。

。。

取得できないと言うのは、コンパイルがNGだったのか、コンパイル正常終了後の実行で参照不正等でプログラムが落ちてしまったのか?
色々あると思います。

&a[0]は確かにaの先頭アドレスを示します。

また、「アドレス情報」とおっしゃっている情報がどんな情報なのか申し訳ありませんが私には分かりませんでした。
私の情報不足?
    • good
    • 0
この回答へのお礼

すいません、解決できました。

VCのデバッガだと10進で表示されていてたので、、、
ありがとうございます。

お礼日時:2009/11/30 00:54

そもそも、何故そんな事をやりたいのかが分かりません。


素直にchar型のポインタで受け取ればいいだけのような気がするのですが。。。
キャストやらずにプログラムが組めるのであれば、キャストしないのが一番です。
何故やりたいのか、考えを教えてください。

この回答への補足

早速の回答ありがとうございます。

> キャストやらずにプログラムが組めるのであれば、キャストしないのが一番です。
おっしゃる通りです。

本来レジスタからunsigned long型でレジスタ情報を取得したいのですが、そのレジスタを化かすためにunsigned long型でアドレス情報が欲しいです

補足日時:2009/11/30 00:19
    • good
    • 0

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