sar*_*ara 4 c pointers memory-alignment
我正在读一本关于" 理解和使用c指针 "的指针的书
说到void *它说
它有两个有趣的属性:
- 指向void的指针将具有与指向char的指针相同的表示和内存对齐.
令人困惑的是,所有指针的记忆都不一样吗?他们为什么而不是写void*与它明确提到的char指针的普通指针相同?真的很感激任何帮助
在大多数常见体系结构中,指向任何数据类型的指针具有相同的表示形式,而指向函数的指针可能不同.但是,这不是必需的,因此可以创建有效的C实现,它对不同的数据类型使用不同的指针.这背后的原因是C标准倾向于仅描述关键要求,为可能的实现留下了很大的自由.这是标准说的:
指向void的指针应具有与指向字符类型的指针相同的表示和对齐要求.同样,指向兼容类型的限定或非限定版本的指针应具有相同的表示和对齐要求.所有指向结构类型的指针都应具有相同的表示和对齐要求.所有指向union类型的指针都应具有相同的表示和对齐要求.指向其他类型的指针不需要具有相同的表示或对齐要求.
如果您想要查看不同数据类型的不同大小的系统示例,这个问题提到了这些精彩的例子
| 归档时间: |
|
| 查看次数: |
957 次 |
| 最近记录: |