void型ポインタのサイズ

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
顔芸

void型ポインタのサイズ

#1

投稿記事 by 顔芸 » 6年前

こんにちは.

早速の質問なのですが,C言語におけるvoid型ポインタのサイズは何に依存して決まるのでしょうか.
Cの規格・・?コンパイラ・・?

自分はコンパイラにgccを使っています.そこで,GNU Cやgccのドキュメントを漁ってみたのですが,
void *のサイズに関する記述を見つけることはできませんでした.

自分の予想ではコンパイラが何bit環境のものか という点に依存して決まっているような気がします.
例えば32bit環境のコンパイラではsizeof(void *)は4(byte)で,64bit環境のコンパイラでは8(byte)と.
しかし裏がとれず,ここで質問させていただく運びとなりました・・

繰り返しになりますが,C言語におけるvoid型ポインタのサイズは何に依存して決まるのでしょうか.
ご回答よろしくお願いしますm(_ _)m

初級者
記事: 200
登録日時: 10年前

Re: void型ポインタのサイズ

#2

投稿記事 by 初級者 » 6年前

voidへのポインター
に限った話ではなく、
すべての型への
ポインターのサイズは
CPUのビット数に
依存すると思います。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 10年前
住所: 東海地方
連絡を取る:

Re: void型ポインタのサイズ

#3

投稿記事 by softya(ソフト屋) » 6年前

最初に言っておくとvoid*もint*もdouble*もメモリサイズは同じです。ポインタですから。
で、ポインタのサイズはターゲットなるOSとCPUに合わせるわけですので、コンパイラが32bitでも64bitOS用の実行ファイルは作ることは可能です。
強いて言うならコンパイラの実行ターゲット指定のオプションで決まるとしか言えないですね。
クロス開発と呼ばれる自分のCPUで実行できない実行ファイルの作成は当たり前に行われていますよ。
一番身近ならAndroidとかiPhoneとか。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

顔芸

Re: void型ポインタのサイズ

#4

投稿記事 by 顔芸 » 6年前

確かに,voidに限った話をするべきではなかったですね^^;失礼しました.
softya(ソフト屋) さんが書きました: 強いて言うならコンパイラの実行ターゲット指定のオプションで決まるとしか言えないですね。
クロス開発と呼ばれる自分のCPUで実行できない実行ファイルの作成は当たり前に行われていますよ。
そうか・・コンパイルオプションで指定できるということは,定義うんぬんではなく都合で変えられるということか・・
色々勘違いしていました;

お二人ともご回答ありがとうございました!

ISLe()

Re: void型ポインタのサイズ

#5

投稿記事 by ISLe() » 6年前

言語仕様上は、void*とint*とdouble*のサイズが同じとは限りません。
ただし、void*はchar*と同じ内部表現と境界調整を持つということになってます。

閉鎖

“C言語何でも質問掲示板” へ戻る