C23 和 nullptr 的内存表示

问题描述 投票:0回答:1

我正在看C文档n3042介绍

nullptr
常量

当它枚举

nullptr
的属性时,有以下内容:

  • 在内存中,nullptr 用与 null 相同的位模式表示 void* 类型的指针常量

那么如果我编写以下代码来验证前面的属性断言是否可靠?

void* null_ptr1 = NULL;    
void* null_ptr2 = nullptr;   

if (memcmp(&null_ptr1, &null_ptr2, sizeof(void*)) == 0) 
    printf("binary rep. of NULL and nullptr is the same.\n");
else 
    printf("binary rep. of NULL and nullptr is not the same.\n");
c null null-pointer nullptr c23
1个回答
0
投票

那么如果我编写以下代码来验证前面的属性断言是否可靠?

C 语言规范并不禁止任何给定的指针类型有多个不同的空指针表示形式。因此,就规范而言,您的程序可能会打印“NULL 和 nullptr 的二进制表示不同。”

© www.soinside.com 2019 - 2024. All rights reserved.