Penunjuk dan Susunan C ++

Dalam tutorial ini, kita akan belajar mengenai hubungan antara tatasusunan dan penunjuk dengan bantuan contoh.

Dalam C ++, Penunjuk adalah pemboleh ubah yang menyimpan alamat pemboleh ubah lain. Penunjuk tidak hanya dapat menyimpan alamat satu pembolehubah, tetapi juga dapat menyimpan alamat sel-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 pemboleh ubah penunjuk sementara arr adalah inttatasusunan. Kod ptr = arr;menyimpan alamat elemen pertama array dalam ptr pemboleh ubah.

Perhatikan bahawa kita telah menggunakan arrdan bukannya &arr(0). Ini kerana kedua-duanya sama. Jadi, kod di bawah ini sama dengan kod di atas.

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

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

Arahkan ke Setiap Elemen Array

Anggaplah kita perlu menunjuk elemen keempat array menggunakan penunjuk ptr yang sama.

Di sini, jika ptr menunjuk ke elemen pertama dalam contoh di atas maka ptr + 3akan menunjuk 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);

Begitu juga, 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);

Katakan jika kita telah dimulakan ptr = &arr(2);kemudian

 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);
Mengendalikan C ++ Penunjuk dengan Susunan

Catatan: Alamat antara ptr dan ptr + 1 berbeza dengan 4 bait. Ini kerana ptr adalah penunjuk intdata. Dan, ukuran int adalah 4 bait dalam sistem operasi 64-bit.

Begitu juga, jika pointer ptr menunjuk ke charjenis data, maka alamat antara ptr dan ptr + 1 adalah 1 bait. Ini kerana ukuran watak adalah 1 bait.

Contoh 1: Penunjuk dan Susunan C ++

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

Pengeluaran

 Memaparkan alamat menggunakan tatasusunan: & arr (0) = 0x61fef0 & arr (1) = 0x61fef4 & arr (2) = 0x61fef8 Memaparkan alamat menggunakan penunjuk: ptr + 0 = 0x61fef0 ptr + 1 = 0x61fef4 ptr + 2 = 0x61fef8

Dalam program di atas, pertama kami hanya mencetak alamat elemen array tanpa menggunakan ptr pemboleh ubah pointer.

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 merosot ke petunjuk. Dengan kata mudah, nama susunan ditukar menjadi petunjuk. Itulah sebab mengapa kita boleh menggunakan penunjuk untuk mengakses elemen tatasusunan.

Walau bagaimanapun, kita harus ingat bahawa petunjuk 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: 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; )

Pengeluaran

 Masukkan 5 nombor: 2.5 3.5 4.5 5 2 Memaparkan data: 2.5 3.5 4.5 5 2

Di sini,

  1. Kami mula-mula menggunakan notasi penunjuk untuk menyimpan nombor yang dimasukkan oleh pengguna ke dalam array arr.

     cin>> *(arr + i) ;

    Kod ini bersamaan dengan kod di bawah:

     cin>> arr(i);

    Perhatikan bahawa kita belum menyatakan pemboleh ubah penunjuk yang terpisah, tetapi kita menggunakan nama array arr untuk notasi penunjuk.

    Seperti yang telah kita ketahui, arr array name menunjuk pada elemen pertama array. Jadi, kita boleh menganggap arr bertindak seperti penunjuk.

  2. Begitu juga, kami kemudian menggunakan forgelung untuk memaparkan nilai arr menggunakan notasi penunjuk.

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

    Kod ini bersamaan dengan

     cout << arr(i) << endl ;

Artikel menarik...