是否保证空指针和字符指针具有相同的内存表示形式?
换句话说,在执行以下命令后:
char a = 'z';
void *b = &a;
char *c;
memcpy(&c, &b, sizeof(b));
我能确定*c == 'z'
(没有未定义的行为等)吗?
是否保证空指针和字符指针具有相同的内存表示形式?
换句话说,在执行以下命令后:
char a = 'z';
void *b = &a;
char *c;
memcpy(&c, &b, sizeof(b));
我能确定*c == 'z'
(没有未定义的行为等)吗?
是的,根据第C99 standard (ISO/IEC 9899)节第6.2.5节第27条:
指向
void
的指针的表示和对齐要求应与 指向字符类型的指针.39)39)相同的表示和对齐要求意味着函数参数、函数返回值和联合成员的互换性.