骑着蜗牛狂奔 发表于 2017-9-17 17:41:19

为什么我的指针和变量大小不一样?

如题
#include<stdio.h>

int main()
{
        char a = 'f';
        int f = 123;
       
        char *pa = &a;
        int *pb = &f;
        printf("a = %c\n",*pa);
        printf("f = %d\n",*pb);
       
        printf("sizeof pa = %d\n",sizeof(pa));
        printf("sizeof a =%d\n",sizeof(a));
        printf("sizeof pb = %d\n",sizeof(pb));
        printf("sizeog f= %d\n",sizeof(f));
       
}

结果如下

和vvv 发表于 2017-9-17 18:55:21

指针存放的是变量的地址,不是这个变量本身。地址又是什么呢?简单理解,地址就是一个数。你可以这样把指针标识的地址打印出来:printf(" pa = %d\n",pa) 最后你会发现结果是6356743(可能与这个不同)。但就是一个整数。

因此,指针变量存放的是一个地址。它的大小,只要能够放下代表地址的整数即可。

ba21 发表于 2017-9-17 19:06:27

指针变量存变的是地址,就一般的环境来说地址占int大小

你在你的环境中加上这么一句测试看看就知道了:
printf("sizeof int = %d\n",sizeof(int));
页: [1]
查看完整版本: 为什么我的指针和变量大小不一样?