私はCプログラミングの初心者です。簡単な質問をしてもいいですか?(int) sizeof(void *)
と の違いは何 int
ですか?
元)
#define ptrint int
#define PTRINT ((int) sizeof(void *))
最初のケースはintのエイリアスとして機能するため、intの代わりにptrintを使用できます。
2番目のケースは、ポインターのサイズ(バイト単位)です。したがって、たとえば32ビットシステムでは、4を返します。
ptrint a = 8;
ptrint b = a;
int sizeofptr = PTRINT;
1つは型で、もう1つは型のサイズを返す式です。
ptrintを使用すると、intの単なるエイリアスである新しい型を定義するだけです。例:
ptrint a;
a = 5;
printf("%d",(int) a); // all this is ok.
PTRINTを使用して、システム上のvoid*ポインターのサイズを含む整数定数を定義します。例:
printf("Size of a void* pointer is %d\n",PTRINT); // will work.
PTRINT a; // will fail
((int)sizeof(void *))は値(システムとコンパイラの実装によって異なります)、intは型です。