Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

C++ Pointer dengan Contoh

Apa itu Pointer?

Dalam C++, pointer mengacu pada variabel yang menyimpan alamat variabel lain. Seperti variabel biasa, pointer memiliki tipe data. Misalnya, pointer bertipe integer dapat menyimpan alamat variabel bertipe integer. Pointer tipe karakter dapat menyimpan alamat variabel tipe karakter.

Anda akan melihat pointer sebagai representasi simbolis dari alamat memori. Dengan pointer, program dapat mensimulasikan call-by-reference. Mereka juga dapat membuat dan memanipulasi struktur data dinamis. Dalam C++, variabel pointer mengacu pada variabel yang menunjuk ke alamat tertentu dalam memori yang ditunjuk oleh variabel lain.

Dalam tutorial C++ ini, Anda akan belajar:

Alamat dalam C++

Untuk memahami pointer C++, Anda harus memahami bagaimana komputer menyimpan data.

Saat Anda membuat variabel dalam program C++, variabel tersebut diberi beberapa ruang di memori komputer. Nilai variabel ini disimpan di lokasi yang ditetapkan.

Untuk mengetahui lokasi di memori komputer tempat data disimpan, C++ menyediakan & (referensi) operator. Operator mengembalikan alamat yang ditempati variabel.

Misalnya, jika x adalah variabel, &x mengembalikan alamat variabel.

Sintaks Deklarasi Pointer

Deklarasi C++ menggunakan sintaks berikut:

datatype *variable_name; 

Berikut adalah contoh deklarasi pointer yang valid di C++:

int    *x;    // a pointer to integer
double *x;    // a pointer to double
float  *x;    // a pointer to float
char   *ch     // a pointer to a character

Operator Referensi (&) dan Operator Deferensi (*)

Operator referensi (&) mengembalikan alamat variabel.

Operator dereference (*) membantu kita mendapatkan nilai yang telah disimpan dalam alamat memori.

Misalnya:

Jika kita memiliki variabel yang diberi nama num, disimpan di alamat 0x234 dan menyimpan nilainya 28.

Operator referensi (&) akan mengembalikan 0x234.

Operator dereference (*) akan mengembalikan 5.

Contoh 1:

#include <iostream>
using namespace std;
int main() {
	int  x = 27;  
	int  *ip;        
	ip = &x;       
	cout << "Value of x is : ";
	cout << x << endl;
	cout << "Value of ip is : ";
	cout << ip<< endl;
	cout << "Value of *ip is : ";
	cout << *ip << endl;
	return 0;
}

Keluaran:

Cara kerjanya:

Berikut adalah screenshot kodenya:

Penjelasan Kode:

  1. Impor file header iostream. Ini akan memungkinkan kita untuk menggunakan fungsi yang didefinisikan dalam file header tanpa mendapatkan kesalahan.
  2. Sertakan namespace std untuk menggunakan kelasnya tanpa memanggilnya.
  3. Panggil fungsi main(). Logika program harus ditambahkan di dalam isi fungsi ini. { menandai awal dari tubuh fungsi.
  4. Deklarasikan variabel integer x dan beri nilai 27.
  5. Deklarasikan variabel pointer *ip.
  6. Simpan alamat variabel x dalam variabel pointer.
  7. Cetak beberapa teks di konsol.
  8. Cetak nilai variabel x pada layar.
  9. Cetak beberapa teks di konsol.
  10. Cetak alamat variabel x. Nilai alamat disimpan dalam variabel ip.
  11. Cetak beberapa teks di konsol.
  12. Cetak nilai yang disimpan pada alamat pointer.
  13. Program harus mengembalikan nilai setelah eksekusi berhasil.
  14. Akhir dari isi fungsi main().

Pointer dan Array

Array dan pointer bekerja berdasarkan konsep terkait. Ada beberapa hal berbeda yang perlu diperhatikan saat bekerja dengan array yang memiliki pointer. Nama array itu sendiri menunjukkan alamat dasar array. Ini berarti bahwa untuk menetapkan alamat array ke pointer, Anda tidak boleh menggunakan ampersand (&).

Misalnya:

p = arr;

Di atas benar karena arr mewakili alamat array. Ini contoh lain:

p = &arr;

Hal di atas salah.

Kita dapat secara implisit mengubah array menjadi pointer. Misalnya:

int arr [20];
int * ip;

Di bawah ini adalah operasi yang valid:

ip = arr;

Setelah deklarasi di atas, ip dan arr akan setara, dan mereka akan berbagi properti. Namun, alamat yang berbeda dapat diberikan ke ip, tetapi kami tidak dapat menetapkan apa pun ke arr.

Contoh 2:

Contoh ini menunjukkan cara melintasi array menggunakan pointer:

#include <iostream>
using namespace std;
int main() {
	int *ip;
	int arr[] = { 10, 34, 13, 76, 5, 46 };
	ip = arr;
	for (int x = 0; x < 6; x++) {
		cout << *ip << endl;
		ip++;
	}
	return 0;
}

Keluaran:

Berikut adalah screenshot kodenya:

Penjelasan Kode:

  1. Deklarasikan variabel pointer integer ip.
  2. Deklarasikan array bernama arr dan simpan 6 bilangan bulat ke dalamnya.
  3. Tetapkan arr ke ip. Ip dan arr akan menjadi setara.
  4. Buat perulangan for. Variabel loop x dibuat untuk mengulangi elemen array dari indeks 0 hingga 5.
  5. Cetak nilai yang disimpan di alamat IP pointer. Satu nilai akan dikembalikan per iterasi, dan total 6 pengulangan akan dilakukan. Endl adalah kata kunci C++ yang berarti garis akhir. Tindakan ini memungkinkan Anda untuk memindahkan kursor ke baris berikutnya setelah setiap nilai dicetak. Setiap nilai akan dicetak dalam baris individual.
  6. Untuk memindahkan pointer ke posisi int berikutnya setelah setiap iterasi.
  7. Akhir dari perulangan for.
  8. Program harus mengembalikan sesuatu setelah eksekusi berhasil.
  9. Akhir dari badan fungsi main().

Penunjuk NULL

Jika tidak ada alamat pasti yang akan ditetapkan, maka variabel pointer dapat diberi NULL. Itu harus dilakukan selama deklarasi. Pointer seperti itu dikenal sebagai pointer nol. Nilainya nol dan didefinisikan di banyak perpustakaan standar seperti iostream.

Contoh 3:

#include <iostream>
using namespace std;
int main() {
	int  *ip = NULL;
	cout << "Value of ip is: " << ip;
	return 0;
}

Keluaran:

Berikut adalah screenshot kodenya:

Penjelasan Kode:

  1. Deklarasikan ip variabel pointer dan berikan nilai NULL.
  2. Cetak nilai ip variabel pointer di samping beberapa teks di konsol.
  3. Program harus mengembalikan nilai setelah berhasil diselesaikan.
  4. Akhir dari isi fungsi main().

Penunjuk Variabel

Dengan C++, Anda dapat memanipulasi data langsung dari memori komputer.

Ruang memori dapat ditetapkan atau ditetapkan kembali sesuai keinginan. Ini dimungkinkan oleh variabel Pointer.

Variabel pointer menunjuk ke alamat tertentu di memori komputer yang ditunjuk oleh variabel lain.

Dapat dideklarasikan sebagai berikut:

int *p;

Atau,

int* p;

Dalam contoh Anda, kami telah mendeklarasikan variabel pointer p.

Ini akan menyimpan alamat memori.

Tanda bintang adalah operator dereference yang berarti penunjuk ke.

Pointer p menunjuk ke nilai integer di alamat memori.

Contoh 4:

#include <iostream>

using namespace std;
int main() {
	int *p, x = 30;
	p = &x;
	cout << "Value of x is: " << *p;
	return 0;
}

Keluaran:

Berikut adalah screenshot kodenya:

Penjelasan Kode:

  1. Deklarasikan variabel pointer p dan variabel x dengan nilai 30.
  2. Menetapkan alamat variabel x ke p.
  3. Cetak nilai variabel pointer p di samping beberapa teks di konsol.
  4. Program harus mengembalikan nilai setelah berhasil diselesaikan.
  5. Akhir dari isi fungsi main().

Aplikasi Pointer

Fungsi dalam C++ hanya dapat mengembalikan satu nilai. Selanjutnya, semua variabel yang dideklarasikan dalam suatu fungsi dialokasikan pada tumpukan panggilan fungsi. Segera setelah fungsi kembali, semua variabel tumpukan dihancurkan.

Argumen ke fungsi dilewatkan dengan nilai, dan modifikasi apa pun yang dilakukan pada variabel tidak mengubah nilai variabel aktual yang diteruskan. Contoh berikut membantu mengilustrasikan konsep ini:-

Contoh 5:

#include <iostream>

using namespace std;
void test(int*, int*);
int main() {
	int a = 5, b = 5;
	cout << "Before changing:" << endl;
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;

	test(&a, &b);

	cout << "\nAfter changing" << endl;
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	return 0;
}

void test(int* n1, int* n2) {
	*n1 = 10;
	*n2 = 11;
}

Keluaran:

Berikut adalah screenshot kodenya:

Penjelasan Kode:

  1. Buat prototipe fungsi bernama tes yang akan mengambil dua parameter bilangan bulat.
  2. Panggil fungsi main(). Kami akan menambahkan logika program di dalam tubuhnya.
  3. Deklarasikan dua variabel integer a dan b, masing-masing bernilai 5.
  4. Cetak beberapa teks di konsol. Endl (garis akhir) akan menggerakkan kursor untuk mulai mencetak di baris berikutnya.
  5. Cetak nilai variabel a pada konsol bersama teks lainnya. Endl (garis akhir) akan menggerakkan kursor untuk mulai mencetak di baris berikutnya.
  6. Cetak nilai variabel b pada konsol bersama teks lainnya. Endl (garis akhir) akan menggerakkan kursor untuk mulai mencetak di baris berikutnya.
  7. Buat fungsi bernama test() yang mengambil alamat variabel a dan b sebagai parameter.
  8. Cetak beberapa teks di konsol. \n akan membuat baris kosong baru sebelum teks dicetak. Endl (garis akhir) akan menggerakkan kursor untuk mulai mencetak di baris berikutnya setelah teks dicetak.
  9. Cetak nilai variabel a pada konsol bersama teks lainnya. Endl (garis akhir) akan menggerakkan kursor untuk mulai mencetak di baris berikutnya.
  10. Cetak nilai variabel b pada konsol bersama teks lainnya. Endl (garis akhir) akan menggerakkan kursor untuk mulai mencetak di baris berikutnya.
  11. Program harus mengembalikan nilai setelah berhasil diselesaikan.
  12. Akhir dari isi fungsi main().
  13. Mendefinisikan tes fungsi(). Fungsi harus mengambil dua variabel pointer integer *n1 dan *n2.
  14. Menetapkan variabel pointer *n1 dengan nilai 10.
  15. Menetapkan variabel pointer *n2 dengan nilai 11.
  16. Akhir dari isi fungsi test().

Meskipun, nilai-nilai baru ditetapkan ke variabel a dan b di dalam uji fungsi, setelah pemanggilan fungsi selesai, hal yang sama tidak mencerminkan main fungsi luar.

Menggunakan pointer sebagai argumen fungsi membantu meneruskan alamat aktual variabel dalam fungsi, dan semua perubahan yang dilakukan pada variabel akan tercermin dalam fungsi luar.

Dalam kasus di atas, fungsi 'test' memiliki alamat variabel 'a' dan 'b.' Kedua variabel ini dapat diakses langsung dari fungsi 'test', dan karenanya setiap perubahan yang dilakukan pada variabel ini tercermin dalam fungsi pemanggil 'utama.'

Keuntungan menggunakan Pointer

Berikut adalah kelebihan/keuntungan menggunakan Pointer

Ringkasan:


Bahasa C

  1. Array di C++ | Nyatakan | Inisialisasi | Contoh Pointer ke Array
  2. C++ do… while loop dengan Contoh
  3. C++ Pointer dengan Contoh
  4. Tipe Data C++ Char dengan Contoh
  5. Operator C++ Overloading dengan Contoh
  6. Struktur C++ Dengan Contoh
  7. std::daftar di C++ dengan Contoh
  8. Fungsi C++ dengan Contoh Program
  9. Tutorial Koleksi C# dengan Contoh
  10. Pointer dalam C:Apa itu Pointer dalam Pemrograman C? Jenis