在这里观看:
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)
但是数组是一个指针!
array[4]是不一样的array + 4.它是一样的*(array + 4).
array + 4肯定是一个指针,但它array[4]是指针指向的值(当然,如果array是某个指针类型的数组,它也可能是指针.)
因为x->y基本上是相同的(*x).y,你可以改写array[4].a为(array + 4)->a,但是你很难过去大多数代码审阅者.