sizeof(char *)`总是等于sizeof(double *)`吗?

时间:2018-09-07 07:07:47

标签: c pointers sizeof

C语言中的小代码段。

                    Connect-PnPOnline -Url $hubUrl -Credentials $O365Credentials
                    $sc = Get-PnPSite
                    $w = Get-PnPWeb
                    $baseRelUrl=$w.ServerRelativeUrl
                    if (-not $baseRelUrl ) {
                          throw "hub site isn't created"
                    }

输出:(GCC 64位)

#include<stdio.h>

int main()
{
    printf("%zu\n%zu\n", sizeof(char*), sizeof(double*));
}

8 8 始终等于sizeof(char*)吗?

关于此的C标准怎么说?

2 个答案:

答案 0 :(得分:1)

sizeof(char*)sizeof(double*)都是指针的大小。因此,它们很可能在任何可以想象的系统上都是相同的。

但是,从理论上讲,实现可能具有用于引用不同数据类型的不同方法。我可以想象一个具有小型优化内存方案的系统正在执行例如单字节纯旧数据放在一个特殊的地方,带有隐式“仅” 32位指针,而它在较大的区域中执行较大的复合构造,这需要64位指针。
因此,不能保证这个看似“显而易见”的假设。

当然,这假定所有内容都在同一系统上,并且指针大小在不同系统之间可以而且确实会有所不同。

答案 1 :(得分:-3)

不仅如此,每当您打印指针变量时,您都将获得相同的值。因为指针变量用于保存变量的地址。