Hubungan Antara Array dan Pointer dalam Pemrograman C (Dengan Contoh)

Dalam tutorial ini, Anda akan belajar tentang hubungan antara array dan pointer dalam pemrograman C. Anda juga akan belajar mengakses elemen array menggunakan pointer.

Sebelum Anda mempelajari tentang hubungan antara array dan pointer, pastikan untuk memeriksa dua topik ini:

  • C Array
  • C Pointer

Hubungan Antara Array dan Pointer

Array adalah blok data berurutan. Mari menulis program untuk mencetak alamat elemen array.

 #include int main() ( int x(4); int i; for(i = 0; i < 4; ++i) ( printf("&x(%d) = %p", i, &x(i)); ) printf("Address of array x: %p", x); return 0; ) 

Keluaran

 & x (0) = 1450734448 & x (1) = 1450734452 & x (2) = 1450734456 & x (3) = 1450734460 Alamat larik x: 1450734448 

Ada perbedaan 4 byte antara dua elemen yang berurutan dari array x. Itu karena ukurannya intadalah 4 byte (di kompiler kami).

Perhatikan bahwa, alamat dari & x (0) dan x adalah sama. Itu karena nama variabel x menunjuk ke elemen pertama dari array.

Dari contoh di atas, jelas bahwa &x(0)ekuivalen dengan x. Dan, x(0)setara dengan *x.

Demikian pula,

  • &x(1)setara dengan x+1dan x(1)setara dengan *(x+1).
  • &x(2)setara dengan x+2dan x(2)setara dengan *(x+2).
  • Pada dasarnya, &x(i)adalah setara dengan x+idan x(i)setara dengan *(x+i).

Contoh 1: Pointer dan Array

 #include int main() ( int i, x(6), sum = 0; printf("Enter 6 numbers: "); for(i = 0; i < 6; ++i) ( // Equivalent to scanf("%d", &x(i)); scanf("%d", x+i); // Equivalent to sum += x(i) sum += *(x+i); ) printf("Sum = %d", sum); return 0; ) 

Saat Anda menjalankan program, hasilnya adalah:

 Masukkan 6 angka: 2 3 4 4 12 4 Jumlah = 29 

Di sini, kami telah mendeklarasikan array x dari 6 elemen. Untuk mengakses elemen array, kami telah menggunakan pointer.

Dalam kebanyakan konteks, nama array meluruh menjadi pointer. Dengan kata sederhana, nama array diubah menjadi pointer. Itulah alasan mengapa Anda bisa menggunakan pointer untuk mengakses elemen array. Namun, Anda harus ingat bahwa pointer dan array tidak sama .

Ada beberapa kasus di mana nama array tidak berubah menjadi pointer. Untuk mempelajari lebih lanjut, kunjungi: Kapan nama array tidak rusak menjadi pointer?

Contoh 2: Array dan Pointer

 #include int main() ( int x(5) = (1, 2, 3, 4, 5); int* ptr; // ptr is assigned the address of the third element ptr = &x(2); printf("*ptr = %d ", *ptr); // 3 printf("*(ptr+1) = %d ", *(ptr+1)); // 4 printf("*(ptr-1) = %d", *(ptr-1)); // 2 return 0; )

Saat Anda menjalankan program, hasilnya adalah:

 * ptr = 3 * (ptr + 1) = 4 * (ptr-1) = 2

Dalam contoh ini, &x(2)alamat elemen ketiga, ditetapkan ke penunjuk ptr. Makanya, 3ditampilkan saat kami mencetak *ptr.

Dan, pencetakan *(ptr+1)memberi kita elemen keempat. Demikian pula, pencetakan *(ptr-1)memberi kita elemen kedua.

Artikel yang menarik...