指针变量的存储空间与类型无关,指针的运算看类型
#include <stdio.h>
#define print(type) \
do \
{ \
type *p = 0; \
printf("sizeof(%6s)=%ld\tsizeof(%6s*)=%ld\tp=0x0\tp+1=%p\n", \
#type, sizeof(type), #type, sizeof(p), p + 1); \
} while (0)
int main()
{
print(char);
print(short);
print(int);
print(long);
print(float);
print(double);
return 0;
}
$ gcc -Wall main.c
$ ./a.out
sizeof( char)=1 sizeof( char*)=8 p=0x0 p+1=0x1
sizeof( short)=2 sizeof( short*)=8 p=0x0 p+1=0x2
sizeof( int)=4 sizeof( int*)=8 p=0x0 p+1=0x4
sizeof( long)=8 sizeof( long*)=8 p=0x0 p+1=0x8
sizeof( float)=4 sizeof( float*)=8 p=0x0 p+1=0x4
sizeof(double)=8 sizeof(double*)=8 p=0x0 p+1=0x8
#include <stdio.h>
int main()
{
int* a;
double* b;
printf("%d %d", sizeof(a), sizeof(b));
return 0;
}