int型ポインタとchar型ポインタの違いってなんですか?
2020/6/2119:55:45
回答
1〜4件/4件中
- 並び替え:回答日時の
- 新しい順
- |古い順
2020/6/2218:28:32
2020/6/2208:44:32
#include <stdio.h>
int main()
{
int *p_int;
char* p_char;
printf("%d\n", (int)sizeof *p_int);
printf("%d\n", (int)sizeof *p_char);
return 0;
}
これで違いの一面を見ることが出来ます。
*p_int のサイズは 4 あるいは 8 。(昔は 2 だったりもしましたが)
*p_char のサイズは必ず 1 です。
printf のところを、
printf("%d\n", (int)sizeof p_int);
printf("%d\n", (int)sizeof p_char);
こうすると違いは無くなります。
ポインタが指す先にあるデータ、それが int 型なのか、char 型なのか、といった違いがありますが、ポインタ変数自体としてはアドレスを保持するものであり、その点で違いはありません。
あみやさん
編集あり2020/6/2123:00:16
ポインタそのものはただのアドレスデータです。
同じシステムでのアドレスのサイズは基本同じですので、ポインタ自体には型は不要です。
しかし、そのアドレスが指し示す先のデータを読む為には、読み込むデータのサイズと形式が分からなければ、データを読むことができません。
その為に指し示す先のデータ型が必要になります。
さらに、ポインタは、ポインタ演算という計算を行います。
ポインタを加算すると、対象となるデータのサイズ分だけ、アドレスを加算するという機能があるので、
その為にも元の型の情報が必要です。
int型へのポインタであれば、int型のサイズ分(主に4バイト)、
char型へのポインタであれば、char型のサイズ分(1バイト)進みます。
ポインタとアドレスの違いはそこにあります。
2020/6/2120:31:05
このカテゴリの回答受付中の質問
- 「モバイルC」というandroid/iOS用アプリを使っている方に質問なのですが、「モバ...
- C言語で、連立一次方程式のヤコビ法で 2x-y=1 -x+2y=1 これを変形して、漸化式で...
- C言語について void f(IntStack* s1, IntStack* s2) { int x; Pop(s1, &x);...
- 【lua言語】ミニワールド内の開発者ツールスクリプトについて ワールドにユーザー...
- UE4のブループリントのマクロは、C++に書き直すにあたってどのような記述になりま...
- VisualStudioで出力した時に文字の色が変わる方法を教えてください。
- C言語のスタックについて #include <stdio.h> #include<stdlib.h> #includ...
- visual studioでlibcurlを使いたいのですが、どうすればいいのでしょうか? 以上...
- C言語初心者です。 unsigned,int,float,doubleそれぞれのビットパターンを表示す...
- C言語 スタックについて ポップした値をprintf内で表示させたいです #include <...
カテゴリQ&Aランキング
- 戻る
- 次へ
総合Q&Aランキング
Yahoo!知恵袋カテゴリ
お客様自身の責任と判断で、ご利用ください。