c语言设计验证指针变量的存储空间与类型无关,指针的运算看类型

指针变量的存储空间与类型无关,指针的运算看类型

#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;
}