c - 行 *x=y 是否等于 c 中的行 x[0]=y
问题描述
在 c 中,使用 malloc 分配新的动态内存时:
int* x = (int*)malloc(sizeof(x));
int y = 10;
这条线是:
*x = y;
等于这一行:
x[0] = y;
解决方案
运算符的定义[]
是:给定ex1[ex2]
,保证等价于
*((ex1) + (ex2))
Whereex1
和ex2
are 表达式。
在你的情况下x[0]
== *(x + 0)
== *(x)
== *x
。
请参阅指针是否支持“数组样式索引”?详情。
推荐阅读
- bash - 使用 sh 或 bash 运行脚本
- angular - 等待一段时间后在 Angular 中显示路线加载动画
- laravel - 如何访问 Laravel Forge 配置的服务器
- design-patterns - 在 DynamoDB 中使用用户输入作为分区键值是否很好
- xcode - 如果我删除了 Info.plist 文件怎么办
- apache-spark - 即使作业正在运行,Spark UI SQL 选项卡也不显示 SQL
- c# - 如何在启动时从文件加载数据
- vue.js - forEach() 调用无法编译
- javascript - 单击搜索框时删除类
- python - 如何在 Python 3 中遍历用户定义的类?