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

C++ Pointer

Petunjuk C++

Dalam tutorial ini, kita akan belajar tentang pointer di C++ dan cara kerjanya dengan bantuan contoh.

Dalam C++, pointer adalah variabel yang menyimpan alamat memori dari variabel lain.

Alamat di C++

Jika kita memiliki variabel var dalam program kami, &var akan memberi kita alamatnya di memori. Misalnya,

Contoh 1:Mencetak Alamat Variabel dalam C++

#include <iostream>
using namespace std;

int main()
{
    // declare variables
    int var1 = 3;
    int var2 = 24;
    int var3 = 17;

    // print address of var1
    cout << "Address of var1: "<< &var1 << endl;

    // print address of var2
    cout << "Address of var2: " << &var2 << endl;

    // print address of var3
    cout << "Address of var3: " << &var3 << endl;
}

Keluaran

Address of var1: 0x7fff5fbff8ac
Address of var2: 0x7fff5fbff8a8
Address of var3: 0x7fff5fbff8a4

Di sini, 0x di awal mewakili alamat dalam bentuk heksadesimal.

Perhatikan bahwa alamat pertama berbeda dari yang kedua sebesar 4 byte dan alamat kedua berbeda dari yang ketiga sebesar 4 byte.

Ini karena ukuran int variabel adalah 4 byte dalam sistem 64-bit.

Catatan: Anda mungkin tidak mendapatkan hasil yang sama saat menjalankan program.


Penunjuk C++

Seperti disebutkan di atas, pointer digunakan untuk menyimpan alamat daripada nilai.

Inilah cara kita mendeklarasikan pointer.

int *pointVar;

Di sini, kita telah mendeklarasikan sebuah pointer pointVar dari int ketik.

Kita juga dapat mendeklarasikan pointer dengan cara berikut.

int* pointVar; // preferred syntax

Mari kita ambil contoh lain untuk mendeklarasikan pointer.

int* pointVar, p;

Di sini, kita telah mendeklarasikan sebuah pointer pointVar dan variabel normal p .

Catatan: * operator digunakan setelah tipe data untuk mendeklarasikan pointer.


Menetapkan Alamat ke Pointer

Berikut adalah bagaimana kita dapat menetapkan alamat ke pointer:

int* pointVar, var;
var = 5;

// assign address of var to pointVar pointer
pointVar = &var;

Di sini, 5 ditugaskan ke variabel var . Dan, alamat var ditugaskan ke pointVar pointer dengan kode pointVar = &var .


Dapatkan Nilai dari Alamat Menggunakan Pointer

Untuk mendapatkan nilai yang ditunjuk oleh pointer, kita menggunakan * operator. Misalnya:

int* pointVar, var;
var = 5;

// assign address of var to pointVar
pointVar = &var;

// access value pointed by pointVar
cout << *pointVar << endl;   // Output: 5

Dalam kode di atas, alamat var ditetapkan ke pointVar . Kami telah menggunakan *pointVar untuk mendapatkan nilai yang disimpan di alamat tersebut.

Ketika * digunakan dengan pointer, ini disebut operator dereferensi . Ini beroperasi pada pointer dan memberikan nilai yang ditunjukkan oleh alamat yang disimpan dalam pointer. Yaitu, *pointVar = var .

Catatan:Dalam C++, pointVar dan *pointVar benar-benar berbeda. Kami tidak dapat melakukan sesuatu seperti *pointVar = &var;


Contoh 2:Cara Kerja Pointer C++

#include <iostream>
using namespace std;
int main() {
    int var = 5;

    // declare pointer variable
    int* pointVar;

    // store address of var
    pointVar = &var;

    // print value of var
    cout << "var = " << var << endl;

    // print address of var
    cout << "Address of var (&var) = " << &var << endl
         << endl;

    // print pointer pointVar
    cout << "pointVar = " << pointVar << endl;

    // print the content of the address pointVar points to
    cout << "Content of the address pointed to by pointVar (*pointVar) = " << *pointVar << endl;
    
    return 0;
}

Keluaran

var = 5
Address of var (&var) = 0x61ff08

pointVar = 0x61ff08
Content of the address pointed to by pointVar (*pointVar) = 5

Mengubah Nilai yang Ditunjuk oleh Pointer

Jika pointVar menunjuk ke alamat var , kita dapat mengubah nilai var dengan menggunakan *pointVar .

Misalnya,

int var = 5;
int* pointVar;

// assign address of var
pointVar = &var;

// change value at address pointVar
*pointVar = 1;

cout << var << endl; // Output: 1

Di sini, pointVar dan &var memiliki alamat yang sama, nilai var juga akan diubah ketika *pointVar diubah.


Contoh 3:Mengubah Nilai yang Ditunjuk oleh Pointer

#include <iostream>
using namespace std;
int main() {
    int var = 5;
    int* pointVar;

    // store address of var
    pointVar = &var;

    // print var
    cout << "var = " << var << endl;

    // print *pointVar
    cout << "*pointVar = " << *pointVar << endl
         << endl;

    cout << "Changing value of var to 7:" << endl;

    // change value of var to 7
    var = 7;

    // print var
    cout << "var = " << var << endl;

    // print *pointVar
    cout << "*pointVar = " << *pointVar << endl
         << endl;

    cout << "Changing value of *pointVar to 16:" << endl;

    // change value of var to 16
    *pointVar = 16;

    // print var
    cout << "var = " << var << endl;

    // print *pointVar
    cout << "*pointVar = " << *pointVar << endl;
    return 0;
}

Keluaran

var = 5
*pointVar = 5

Changing value of var to 7:
var = 7
*pointVar = 7

Changing value of *pointVar to 16:
var = 16
*pointVar = 16

Kesalahan umum saat bekerja dengan pointer

Misalkan, kita menginginkan pointer varPoint untuk menunjuk ke alamat var . Kemudian,

int var, *varPoint;

// Wrong! 
// varPoint is an address but var is not
varPoint = var;

// Wrong!
// &var is an address
// *varPoint is the value stored in &var
*varPoint = &var;

// Correct! 
// varPoint is an address and so is &var
varPoint = &var;

 // Correct!
// both *varPoint and var are values
*varPoint = var;

Bacaan yang Disarankan :

  • Bagaimana cara menggunakan pointer tipe data umum menggunakan pointer kosong?
  • Bagaimana cara merepresentasikan array menggunakan pointer?
  • Bagaimana cara menggunakan pointer dengan fungsi?
  • Bagaimana cara menggunakan pointer dengan struktur?

Bahasa C

  1. Tipe Data C++
  2. Operator C++
  3. Komentar C++
  4. Template Kelas C++
  5. C Pointer
  6. C++ Pointer dengan Contoh
  7. C - Pointer
  8. Ikhtisar C++
  9. Konstanta/Literal C++
  10. Operator di C++