mar*_*nev 3 c c99 void-pointers language-lawyer
void 和 char 指针是否保证具有相同的内存表示形式?
换句话说,执行以下命令后:
char a = 'z';
void *b = &a;
char *c;
memcpy(&c, &b, sizeof(b));
Run Code Online (Sandbox Code Playgroud)
我可以确定*c == 'z'(没有未定义的行为等)吗?
Mar*_*lli 10
是的,根据C99 标准 (ISO/IEC 9899) \xc2\xa76.2.5 第 27 节:
\n\n\n指向的指针
\nvoid应与指向字符类型的指针具有相同的表示和对齐要求。39)39) 相同的表示和对齐要求意味着作为函数参数、函数返回值和联合成员的可互换性。
\n
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |