![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
ポインタと型のサイズについて、実験しています。
以下のプログラムを実行したときに、さらに下の
画面表示になるのですが、ここで疑問があります。
int型の配列を作ってそのポインタを表示しています。
i[0]のポインタ=0012FF38
i[1]のポインタ=0012FF3C
0012FF38 と 0012FF3C の間は16ビットなのに、
int型のサイズは4バイトとなってしまいます。
なぜでしょうか。
-------------プログラムここから--------------
#include <iostream>
using namespace std;
int main(){
int i[20];
for(int j = 0;j<20;j++){
printf("i[%d]のポインタ=%p\n",j, &i[j]);
}
printf("\n\nsizeof(int) = %d\n\n", sizeof(int));
return 0;
}
-------------プログラムここまで--------------
-------------画面出力ここから--------------
i[0]のポインタ=0012FF38
i[1]のポインタ=0012FF3C
i[2]のポインタ=0012FF40
i[3]のポインタ=0012FF44
i[4]のポインタ=0012FF48
i[5]のポインタ=0012FF4C
i[6]のポインタ=0012FF50
i[7]のポインタ=0012FF54
i[8]のポインタ=0012FF58
i[9]のポインタ=0012FF5C
i[10]のポインタ=0012FF60
i[11]のポインタ=0012FF64
i[12]のポインタ=0012FF68
i[13]のポインタ=0012FF6C
i[14]のポインタ=0012FF70
i[15]のポインタ=0012FF74
i[16]のポインタ=0012FF78
i[17]のポインタ=0012FF7C
i[18]のポインタ=0012FF80
i[19]のポインタ=0012FF84
sizeof(int) = 4
-------------画面出力ここまで--------------
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_03.png?8acaa2e)
No.1ベストアンサー
- 回答日時:
i[0]のポインタ=0012FF38
i[1]のポインタ=0012FF3C
0012FF38 と 0012FF3C の間は16ビットなのに、
int型のサイズは4バイトとなってしまいます。
「0012FF38 と 0012FF3C の間は16ビットなのに、」
0012FF38 と 0012FF3C の間は32ビットです。
どこから16ビットの計算が出てきたのでしょう?
0012FF3C-0012FF38=4
で4バイトになっています。
この回答への補足
0012FF38 と 0012FF3C の間には
0012FF38 0012FF39 0012FF3A 0012FF3Bの4つがあり、
それぞれの末尾の8 9 A B を表現するためには、1つに
ついて、4ビットいるから4 * 4 = 16と計算していました。
今考えると、これは何を計算しているのだろうと
思います。。
0012FF3C-0012FF38=4で4バイトですね、
ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# ポインタの型変換、どうやるんでしたっけ? 2 2022/03/28 11:00
- C言語・C++・C# C言語: ポインタ 5 2022/06/01 08:33
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# C pointer? or... 2 2022/03/29 00:47
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- その他(ブラウザ) Microsoft edgeのスクロールバーについて 2 2022/09/19 16:56
- C言語・C++・C# C言語 配列とポインタについて 2 2022/06/02 11:53
- デスクトップパソコン 全画面表示でもタスクバーを前面に隠す、表示させるようにしたい 3 2022/03/23 12:30
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セグメントエラー
-
init関数の意味
-
C言語のポインタに直接アドレス...
-
クイックソートの比較交換回数...
-
【C言語】戻り値が構造体の関数
-
連結リスト 要素の入れ替え
-
戻り値で構造体を返すことは可...
-
ポインタのミスでOS壊れるの...
-
アプリを32bitから64bit移行
-
プログラミングのfarについて
-
エラーの意味
-
コンストラクタでnewを失敗した...
-
関数ポインタを返す関数の型をt...
-
基本アルゴリズムの『返す』の...
-
C言語の勉強しています。すみま...
-
C++におけるポインタの使い方
-
構造体の中の構造体
-
main(int argc,char **argv[])...
-
C言語 ポインタと配列の違い...
-
ポインタと型のサイズに関する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セグメントエラー
-
C言語のポインタに直接アドレス...
-
fopne で失敗する原因
-
init関数の意味
-
Run-Time Check Failure #3とい...
-
戻り値で構造体を返すことは可...
-
LPSTR型の初期化について
-
Cで作成したDLL関数をVBから呼...
-
ExcelVBAでのkernel32(64bit)
-
アプリを32bitから64bit移行
-
構造体とfscanf
-
c言語で任意のファイルから読み...
-
デバイスハンドルとは?
-
main(int argc,char **argv[])...
-
基本アルゴリズムの『返す』の...
-
コンストラクタでnewを失敗した...
-
C言語の関数と配列に関する質問
-
参照型で受け取った引数をポイ...
-
ハンドル、アドレス、ポインタ...
-
DLL<->VB間での受け渡し(文字...
おすすめ情報