利用一个简单的宏来显示每种数据类型和它占用多少内存空间。
需要说明的一点是,编译的时候sizeof就已经被替换成该变量对应的空间大小了,运行的时候只是把改常数打印出来。
#include <stdio.h>
#define SPACE(T) printf("%20s:%5d B \n",#T,sizeof(T))
#define NEWLINE() printf("\n")
int main(void)
{
char array[5];
void *void_pointer;
char *char_pointer = &array[0];
int a;
int *int_pointer;
int_pointer = &a;
SPACE(char);
NEWLINE();
SPACE(signed);
SPACE(unsigned);
NEWLINE();
SPACE(short);
SPACE(short int);
SPACE(int);
SPACE(long);
SPACE(long int);
NEWLINE();
SPACE(float);
SPACE(double);
SPACE(double long);
SPACE(long double);
NEWLINE();
SPACE(array); /*sizeof(char) * 5*/
SPACE(&array);
SPACE(array[0]);
SPACE(&array[0]);
SPACE(char_pointer);
SPACE(void_pointer);
SPACE(int_pointer);
return 0;
}