C ++ Pointer dan Array

Dalam tutorial ini, kita akan belajar tentang hubungan antara array dan pointer dengan bantuan contoh.

Di C ++, Pointer adalah variabel yang menyimpan alamat variabel lain. Penunjuk tidak hanya dapat menyimpan alamat variabel tunggal, tetapi juga dapat menyimpan alamat sel array.

Pertimbangkan contoh ini:

 int *ptr; int arr(5); // store the address of the first // element of arr in ptr ptr = arr;

Di sini, ptr adalah variabel penunjuk sedangkan arr adalah intarray. Kode ptr = arr;menyimpan alamat elemen pertama dari array di variabel ptr.

Perhatikan bahwa kami telah menggunakan arrsebagai pengganti &arr(0). Ini karena keduanya sama. Jadi kode dibawah ini sama dengan kode diatas.

 int *ptr; int arr(5); ptr = &arr(0);

Alamat untuk sisa elemen array yang diberikan oleh &arr(1), &arr(2), &arr(3), dan &arr(4).

Arahkan ke Setiap Elemen Array

Misalkan kita perlu menunjuk ke elemen keempat dari array menggunakan pointer ptr yang sama.

Di sini, jika ptr menunjuk ke elemen pertama pada contoh di atas, maka ptr + 3akan mengarah ke elemen keempat. Sebagai contoh,

 int *ptr; int arr(5); ptr = arr; ptr + 1 is equivalent to &arr(1); ptr + 2 is equivalent to &arr(2); ptr + 3 is equivalent to &arr(3); ptr + 4 is equivalent to &arr(4);

Demikian pula, kita dapat mengakses elemen menggunakan penunjuk tunggal. Sebagai contoh,

 // use dereference operator *ptr == arr(0); *(ptr + 1) is equivalent to arr(1); *(ptr + 2) is equivalent to arr(2); *(ptr + 3) is equivalent to arr(3); *(ptr + 4) is equivalent to arr(4);

Misalkan jika kita sudah menginisialisasi ptr = &arr(2);lalu

 ptr - 2 is equivalent to &arr(0); ptr - 1 is equivalent to &arr(1); ptr + 1 is equivalent to &arr(3); ptr + 2 is equivalent to &arr(4);
Bekerja dari C ++ Pointer dengan Array

Catatan: Alamat antara ptr dan ptr + 1 berbeda 4 byte. Itu karena ptr adalah penunjuk ke intdata. Dan, ukuran int adalah 4 byte dalam sistem operasi 64-bit.

Demikian pula, jika pointer ptr menunjuk ke chartipe data, maka alamat antara ptr dan ptr + 1 adalah 1 byte. Karena ukuran sebuah karakter adalah 1 byte.

Contoh 1: C ++ Pointer dan Array

 // C++ Program to display address of each element of an array #include using namespace std; int main() ( float arr(3); // declare pointer variable float *ptr; cout << "Displaying address using arrays: " << endl; // use for loop to print addresses of all array elements for (int i = 0; i < 3; ++i) ( cout << "&arr(" << i << ") = " << &arr(i) << endl; ) // ptr = &arr(0) ptr = arr; cout<<"Displaying address using pointers: "<< endl; // use for loop to print addresses of all array elements // using pointer notation for (int i = 0; i < 3; ++i) ( cout << "ptr + " << i << " = "<< ptr + i << endl; ) return 0; )

Keluaran

 Menampilkan alamat menggunakan array: & arr (0) = 0x61fef0 & arr (1) = 0x61fef4 & arr (2) = 0x61fef8 Menampilkan alamat menggunakan pointer: ptr + 0 = 0x61fef0 ptr + 1 = 0x61fef4 ptr + 2 = 0x61fef8

Dalam program di atas, pertama-tama kita hanya mencetak alamat dari elemen array tanpa menggunakan variabel pointer ptr.

Kemudian, kami menggunakan penunjuk ptr untuk menunjuk ke alamat a (0), ptr + 1untuk menunjuk ke alamat a (1), dan seterusnya.

Dalam kebanyakan konteks, nama array meluruh menjadi pointer. Dengan kata sederhana, nama array diubah menjadi pointer. Itulah alasan mengapa kita bisa menggunakan pointer untuk mengakses elemen array.

Namun, kita 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: Nama array digunakan sebagai penunjuk

 // C++ Program to insert and display data entered by using pointer notation. #include using namespace std; int main() ( float arr(5); // Insert data using pointer notation cout << "Enter 5 numbers: "; for (int i = 0; i > *(arr + i) ; ) // Display data using pointer notation cout << "Displaying data: " << endl; for (int i = 0; i < 5; ++i) ( // display value of arr(i) cout << *(arr + i) << endl ; ) return 0; )

Keluaran

 Masukkan 5 angka: 2.5 3.5 4.5 5 2 Menampilkan data: 2.5 3.5 4.5 5 2

Sini,

  1. Kami pertama kali menggunakan notasi pointer untuk menyimpan angka yang dimasukkan oleh pengguna ke dalam array arr.

     cin>> *(arr + i) ;

    Kode ini sama dengan kode di bawah ini:

     cin>> arr(i);

    Perhatikan bahwa kami belum mendeklarasikan variabel pointer terpisah, tetapi kami menggunakan nama array arr untuk notasi pointer.

    Seperti yang telah kita ketahui, nama array arr menunjuk ke elemen pertama dari array. Jadi, kita dapat menganggap arr sebagai penunjuk.

  2. Demikian pula, kami kemudian menggunakan forloop untuk menampilkan nilai-nilai arr menggunakan notasi pointer.

     cout << *(arr + i) << endl ;

    Kode ini setara dengan

     cout << arr(i) << endl ;

Artikel yang menarik...