C 中的行 (*x=y) 是否等于行 (x[0]=y)

Guy*_*uyB -1 c malloc pointers equals

我对 C 语法感到困惑。如果我分配内存:

int* x = (int*)malloc(1 * sizeof(int));
Run Code Online (Sandbox Code Playgroud)

int 指针的这两个代码片段是否相等?

*x = 0;
Run Code Online (Sandbox Code Playgroud)

x[0] = 0;
Run Code Online (Sandbox Code Playgroud)

Lun*_*din 5

运算符的定义[]是:给定ex1[ex2],保证等价于

*((ex1) + (ex2))
Run Code Online (Sandbox Code Playgroud)

其中ex1ex2是表达式。

在你的情况下x[0]== *(x + 0)== *(x)== *x

请参阅指针是否支持“数组样式索引”?了解详情。