运算符 - >在malloc函数中

Ale*_*roF 0 c malloc pointers

在这里观看:

struct mystruct{
 int a;
 int b;
};

int main(void){
 struct mystruct* ptr;
 ptr = malloc( 10*sizeof( struct mystruct ) );
Run Code Online (Sandbox Code Playgroud)

这样我就分配了一个struct数组.如果你试图打印,例如ptr [4],你会注意到一个指针.当我有一个指针并且我可以访问一个成员时,我必须使用 - >运算符吗?但如果我这样做:

ptr[4]->a
Run Code Online (Sandbox Code Playgroud)

它不起作用!我必须这样做

ptr[4].a 
Run Code Online (Sandbox Code Playgroud)

让它工作......为什么?我有一个指针!ptr [4] =(ptr + 4)对吗?

在正常数组中也会发生这种情况

struct mystruct array[10];
array[4].a
Run Code Online (Sandbox Code Playgroud)

但是数组是一个指针!

ric*_*ici 5

array[4]一样的array + 4.它是一样的*(array + 4).

array + 4肯定是一个指针,但它array[4]是指针指向的值(当然,如果array是某个指针类型的数组,它也可能是指针.)

因为x->y基本上是相同的(*x).y,你可以改写array[4].a(array + 4)->a,但是你很难过去大多数代码审阅者.