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 int
array. Kode ptr = arr;
menyimpan alamat elemen pertama dari array di variabel ptr.
Perhatikan bahwa kami telah menggunakan arr
sebagai 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 + 3
akan 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);

Catatan: Alamat antara ptr dan ptr + 1 berbeda 4 byte. Itu karena ptr adalah penunjuk ke int
data. Dan, ukuran int adalah 4 byte dalam sistem operasi 64-bit.
Demikian pula, jika pointer ptr menunjuk ke char
tipe 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 + 1
untuk 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,
-
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.
-
Demikian pula, kami kemudian menggunakan
for
loop untuk menampilkan nilai-nilai arr menggunakan notasi pointer.cout << *(arr + i) << endl ;
Kode ini setara dengan
cout << arr(i) << endl ;