ここから本文です

int型ポインタとchar型ポインタの違いってなんですか?

gbj********さん

2020/6/2119:55:45

int型ポインタとchar型ポインタの違いってなんですか?

閲覧数:
31
回答数:
4

違反報告

回答

1〜4件/4件中

並び替え:回答日時の
新しい順
|古い順

yuk********さん

2020/6/2218:28:32

正確に言うと「int型へのポインタ」「char型へのポインタ」ね。
つまり、指し示す先にあるのがint型のデータかchar型のデータかってこと。

プロフィール画像

カテゴリマスター

n2q37_cppさん

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バイト)進みます。
ポインタとアドレスの違いはそこにあります。

間接参照先を int 型として扱うか、char 型として扱うかの違いです。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

本文はここまでです