1

私はCプログラミングの初心者です。簡単な質問をしてもいいですか?(int) sizeof(void *) と の違いは何 int ですか?

元)

#define ptrint          int
#define PTRINT          ((int) sizeof(void *))
4

4 に答える 4

4

最初のケースはintのエイリアスとして機能するため、intの代わりにptrintを使用できます。

2番目のケースは、ポインターのサイズ(バイト単位)です。したがって、たとえば32ビットシステムでは、4を返します。

ptrint a = 8;
ptrint b = a;

int sizeofptr = PTRINT;
于 2012-11-23T13:00:42.490 に答える
3

1つは型で、もう1つは型のサイズを返す式です。

于 2012-11-23T12:59:23.870 に答える
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
于 2012-11-23T13:04:53.707 に答える
0

((int)sizeof(void *))は値(システムとコンパイラの実装によって異なります)、intは型です。

于 2012-11-23T13:00:57.850 に答える