直线*x=y等于c中的直线x[0]=y吗

直线*x=y等于c中的直线x[0]=y吗,c,equals,C,Equals,在c语言中,当使用malloc分配新的动态内存时: int* x = (int*)malloc(sizeof(x)); int y = 10; 这条线是: *x = y; x[0] = y; 等于这条线: *x = y; x[0] = y; []运算符的定义是:给定ex1[ex2],它保证等同于 *((ex1) + (ex2)) 其中ex1和ex2是表达式 在您的情况下,x[0]=*(x+0)=*(x)==*x 请参阅以了解详细信息。是的,它是相等的。请注意,sizeof(x)不一定

在c语言中,当使用malloc分配新的动态内存时:

int* x = (int*)malloc(sizeof(x));
int y = 10;
这条线是:

*x = y;
x[0] = y;
等于这条线:

*x = y;
x[0] = y;

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

*((ex1) + (ex2))
其中
ex1
ex2
是表达式

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


请参阅以了解详细信息。

是的,它是相等的。请注意,
sizeof(x)
不一定是为
int
分配空间的正确大小,因为
x
是指针,在某些实现中,指针的大小与int的大小不同。请使用
int*x=malloc(sizeof*x)
(没有多余的强制转换,请记住
#include
)更一般地说
*(x+y)
x[y]
@Jabberwocky:或
y[x]
完全相同。。。3[“foobar”]=“foobar”[3]=*(3+“foobar”)==“b”,更有趣的是,它与
0[x]=y相同