Hubungan Antara Susunan dan Petunjuk dalam Pengaturcaraan C (Dengan Contoh)

Dalam tutorial ini, anda akan mengetahui tentang hubungan antara tatasusunan dan petunjuk dalam pengaturcaraan C. Anda juga akan belajar mengakses elemen array dengan menggunakan pointer.

Sebelum anda mengetahui mengenai hubungan antara tatasusunan dan penunjuk, pastikan untuk memeriksa dua topik berikut:

  • C Susunan
  • Penunjuk C

Hubungan Antara Susunan dan Petunjuk

Susunan adalah sekumpulan data berurutan. Mari tulis 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; ) 

Pengeluaran

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

Terdapat perbezaan 4 bait antara dua elemen susunan x berturut-turut. Ini kerana ukurannya intadalah 4 bait (pada penyusun kami).

Perhatikan bahawa, alamat & x (0) dan x adalah sama. Ini kerana nama pemboleh ubah x menunjuk pada elemen pertama array.

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

Begitu juga,

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

Contoh 1: Penunjuk dan Susunan

 #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; ) 

Semasa anda menjalankan program, outputnya adalah:

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

Di sini, kami telah menyatakan susunan x dari 6 elemen. Untuk mengakses elemen array, kami telah menggunakan petunjuk.

Dalam kebanyakan konteks, nama array merosot ke petunjuk. Dengan kata mudah, nama susunan ditukar menjadi petunjuk. Itulah sebab mengapa anda boleh menggunakan penunjuk untuk mengakses elemen tatasusunan. Walau bagaimanapun, anda harus ingat bahawa penunjuk dan tatasusunan tidak sama .

Terdapat beberapa kes di mana nama array tidak merosot ke petunjuk. Untuk mengetahui lebih lanjut, lawati: Bilakah nama array tidak merosot menjadi penunjuk?

Contoh 2: Susun atur dan Penunjuk

 #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; )

Semasa anda menjalankan program, outputnya adalah:

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

Dalam contoh ini, &x(2)alamat elemen ketiga, diberikan kepada penunjuk ptr. Oleh itu, 3dipaparkan semasa kami mencetak *ptr.

Dan, mencetak *(ptr+1)memberi kita elemen keempat. Begitu juga, mencetak *(ptr-1)memberi kita elemen kedua.

Artikel menarik...