c - 这是否违反了严格的别名规则?
问题描述
受我对最近帖子的评论的启发:C get element on place without parenthesis,我想知道以下代码是否违反了严格的别名规则:
#include <stdio.h>
int main(void)
{
int num[3] = { 1, 2, 3 };
printf("num[1] = %d\n", *(int *)((char *)num + sizeof(int)));
return 0;
}
我知道将类型转换为其他类型的指针取消引用char
是违规的,但在这里,原始指针的类型是int *
. char *
在它被强制转换为then to之后它被取消引用int *
。
这是否违反了严格的别名规则?
解决方案
推荐阅读
- python - 为什么 Python 中的 Deepcopy 不为单个 int 值创建新对象?
- python - 找不到静态文件目录(heroku)
- tensorflow - 没有工作服务器的分布式模型训练
- virtualbox - 启动 whonix 时出现 VirtualBox 错误
- android - 如何使用底部导航将数据从活动发送到片段
- javascript - 在本地构建 vis-timeline 时出现 NPM 对等依赖问题
- google-cloud-platform - 为什么我的 GCloud 日志中的时间戳被截断为秒?
- reactjs - 试图保留原始数组(克隆,反应)
- javascript - 有没有办法访问谷歌浏览器的打印属性
- pyqtgraph - 如何 pyqtgraph 图例动作分组?