Bahasa C
Dalam tutorial ini, kita akan belajar tentang hubungan antara array dan pointer dengan bantuan contoh.
Dalam C++, Pointer adalah variabel yang menyimpan alamat dari variabel lain. Pointer tidak hanya dapat menyimpan alamat variabel tunggal, tetapi juga dapat menyimpan alamat sel array.
Perhatikan 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 pointer sementara arr adalah int
Himpunan. Kode ptr = arr;
menyimpan alamat elemen pertama array dalam variabel ptr .
Perhatikan bahwa kita telah menggunakan arr
bukannya &arr[0]
. Ini karena keduanya sama. Jadi, kode di bawah ini sama dengan kode di atas.
int *ptr;
int arr[5];
ptr = &arr[0];
Alamat untuk elemen array lainnya diberikan oleh &arr[1]
, &arr[2]
, &arr[3]
, dan &arr[4]
.
Misalkan kita perlu menunjuk ke elemen keempat dari array menggunakan pointer yang sama ptr .
Di sini, jika ptr menunjuk ke elemen pertama dalam contoh di atas lalu ptr + 3
akan menunjuk ke elemen keempat. Misalnya,
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 pointer tunggal. Misalnya,
// 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 telah 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 dengan 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
ketik data, lalu alamat di antara ptr dan ptr + 1 adalah 1 byte. Itu karena ukuran karakter adalah 1 byte.
// C++ Program to display address of each element of an array
#include <iostream>
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<<"\nDisplaying 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
Displaying address using arrays: &arr[0] = 0x61fef0 &arr[1] = 0x61fef4 &arr[2] = 0x61fef8 Displaying address using pointers: ptr + 0 = 0x61fef0 ptr + 1 = 0x61fef4 ptr + 2 = 0x61fef8
Pada program di atas, pertama-tama kita hanya mencetak alamat elemen array tanpa menggunakan variabel pointer ptr .
Kemudian, kami menggunakan pointer ptr untuk menunjuk ke alamat a[0] , ptr + 1
untuk menunjuk ke alamat a[1] , dan seterusnya.
Dalam kebanyakan konteks, nama array membusuk 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 berubah menjadi pointer?
// C++ Program to insert and display data entered by using pointer notation.
#include <iostream>
using namespace std;
int main() {
float arr[5];
// Insert data using pointer notation
cout << "Enter 5 numbers: ";
for (int i = 0; i < 5; ++i) {
// store input number in arr[i]
cin >> *(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
Enter 5 numbers: 2.5 3.5 4.5 5 2 Displaying data: 2.5 3.5 4.5 5 2
Di sini,
Kami pertama kali menggunakan notasi pointer untuk menyimpan angka yang dimasukkan oleh pengguna ke dalam array arr .
cin >> *(arr + i) ;
Kode ini setara dengan kode di bawah ini:
cin >> arr[i];
Perhatikan bahwa kita belum mendeklarasikan variabel pointer terpisah, tetapi kita menggunakan nama array arr untuk notasi penunjuk.
Seperti yang sudah kita ketahui, nama array arr menunjuk ke elemen pertama dari array. Jadi, kita bisa memikirkan arr bertindak seperti penunjuk.
Demikian pula, kami kemudian menggunakan for
loop untuk menampilkan nilai arr menggunakan notasi penunjuk.
cout << *(arr + i) << endl ;
Kode ini setara dengan
cout << arr[i] << endl ;
Bahasa C
C++ Multiple, Multilevel dan Hierarchical Inheritance Dalam tutorial ini, kita akan belajar tentang berbagai model pewarisan dalam pemrograman C++:Pewarisan Berganda, Bertingkat, dan Hierarki beserta contohnya. Pewarisan adalah salah satu fitur inti dari bahasa pemrograman berorientasi objek. Hal i
Apa itu Kelas? Kelas C++ menggabungkan data dan metode untuk memanipulasi data menjadi satu. Kelas juga menentukan bentuk objek. Data dan metode yang terkandung dalam sebuah kelas dikenal sebagai anggota kelas. Kelas adalah tipe data yang ditentukan pengguna. Untuk mengakses anggota kelas, kami men
Apa itu bahasa pemrograman C? C adalah bahasa pemrograman tingkat menengah yang dikembangkan di Bell Lab pada tahun 1972 oleh Dennis Ritchie. Bahasa C menggabungkan fitur Bahasa Tingkat Rendah dan Bahasa Tingkat Tinggi. Oleh karena itu dianggap sebagai Bahasa tingkat menengah. C adalah bahasa pemr
Sebuah array deklarasi jaring atau variabel dapat berupa skalar atau vektor. Sejumlah dimensi dapat dibuat dengan menentukan rentang alamat setelah nama pengenal dan disebut array multi-dimensi. Array diperbolehkan di Verilog untuk reg , wire , integer dan real tipe data. reg y1 [11:0]