Tonton di sini:
struct mystruct{
int a;
int b;
};
int main(void){
struct mystruct* ptr;
ptr = malloc( 10*sizeof( struct mystruct ) );
Dengan cara ini saya telah mengalokasikan array struct. Jika Anda mencoba mencetak, misalnya ptr[4], Anda akan melihat sebuah penunjuk. Ketika saya memiliki pointer dan saya memiliki akses ke anggota, saya harus menggunakan operator -> kan? Tetapi jika saya melakukannya:
ptr[4]->a
Itu tidak berhasil! saya harus melakukan
ptr[4].a
untuk membuatnya berhasil... mengapa? Saya punya petunjuk! ptr[4] = (ptr+4) kan?
Juga dalam array normal hal ini terjadi:
struct mystruct array[10];
array[4].a
tetapi array adalah sebuah penunjuk!
struct mystruct
, ini bukan pointer. - person davmac   schedule 10.03.2017ptr[4]
adalah*(ptr+4)
. Perhatikan bahwa*
?ptr[4]
bukan penunjuk. - person AnT   schedule 10.03.2017struct mystruct
bukan arraystruct mystruct *
... dan[ ]
offset dan dereferensi, sehingga memberikan struct dalam array, bukan pointer ke array tersebut. - person Dmitri   schedule 10.03.2017