Di sini saya memiliki pointer ptrke array arr4 bilangan bulat. ptrmenunjuk ke seluruh array. ptr[0]atau *ptrmenunjuk ke elemen pertama array, jadi menambahkan 1 untuk ptr[0]memberikan alamat elemen kedua array.
Saya tidak mengerti mengapa menggunakan sizeof(ptr[0])memberikan ukuran seluruh array, 16 byte, bukan hanya ukuran elemen pertama, 4 byte, (sebagai ptr[0]poin ke elemen pertama dalam array).
int arr[4] = {0, 1, 2, 3};
int (*ptr)[4] = &arr;
printf("%zd", sizeof(ptr[0])); //output is 16
int *ptr = arr;? Sebenarnya tidak. int (*ptr)[4]menciptakan ptrsebagai penunjuk ke array penuh dari empat intnilai. Sintaksis pointer seperti itu diperlukan untuk mengalokasikan array true-multidimensional secara dinamis. "Array 2 dimensi" yang dibuat dengan malloc()loop bersarang dan digambarkan secara keliru sebagai array multidimensi adalah benar-benar array pointer 1-ke beberapa array 1-d. Lihat stackoverflow.com/questions/42094465/…
int *ptr = arr;? Itu akan membuatnya menunjuk ke awal (elemen pertama) array, yang setara dengan&arr[0].