admin Membahas dengan sederhana rumus-rumus yang ada di matematika dan finansial - Bagi Aja

Penjelasan, Contoh Program – Pointers C++

4 min read

Pada artikel ini, Anda akan mempelajari segala sesuatu tentang petunjuk. Anda akan belajar bagaimana nilai disimpan di komputer dan cara mengaksesnya menggunakan Pointers C++.

Pointer adalah fitur kuat C ++ yang membedakannya dari bahasa pemrograman lain seperti Java dan Python.

Pointers C++ digunakan dalam program C ++ untuk mengakses memori dan memanipulasi alamat.

PHP Dev Cloud Hosting

Address (Alamat) di C ++

Untuk memahami pointer, Anda harus terlebih dahulu tahu bagaimana data disimpan di komputer.

Setiap variabel yang Anda buat dalam program Anda diberikan lokasi dalam memori komputer. Nilai toko variabel sebenarnya disimpan di lokasi yang ditetapkan.

Untuk mengetahui di mana data disimpan, C ++ memiliki & operator. Operator & (referensi) memberi Anda alamat yang ditempati oleh variabel.

Contoh 1: Address in C++

#include <iostream>
using namespace std;

int main()
{
    int var1 = 3;
    int var2 = 24;
    int var3 = 17;
    cout << &var1 << endl;
    cout << &var2 << endl;
    cout << &var3 << endl;
}

Output

0093FCC8
0093FCBC
0093FCB0

Catatan: Anda mungkin tidak mendapatkan hasil yang sama pada sistem Anda.

Affiliate Banner Unlimited Hosting Indonesia

0x di awal mewakili alamat dalam bentuk heksadesimal.

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

Ini karena ukuran integer (variabel tipe int) adalah 4 byte dalam sistem 64-bit

Variabel Pointer

C ++ memberi Anda kekuatan untuk memanipulasi data dalam memori komputer secara langsung. Anda dapat menetapkan dan membatalkan penetapan ruang di memori sesuai keinginan. Ini dilakukan dengan menggunakan variabel Pointer.

Variabel pointer adalah variabel yang menunjuk ke alamat tertentu dalam memori yang ditunjukkan oleh variabel lain.

Bagaimana cara mendeklarasikan pointer?

char* cptr;         // pointer to char
int* iptr;          // pointer to int
float* fptr;        // pointer to float
Distance* distptr;  // pointer to user-defined Distance class

Apa tipe data dari variabel pointer? Itu tidak sama dengan variabel yang alamatnya disimpan; pointer ke int bukan tipe int. Anda mungkin berpikir tipe data pointer akan disebut sesuatu seperti pointer atau ptr.

Namun, masalahnya sedikit lebih rumit. Selanjutnya Program, PTRVAR, menunjukkan sintaks untuk variabel pointer.

// ptrvar.cpp
// pointers (address variables)
#include <iostream>
using namespace std;
int main()
{
	int var1 = 11;             //two integer variables
	int var2 = 22;
	cout << &var1 << endl      //print addresses of variables
		<< &var2 << endl << endl;
	int* ptr;                  //pointer to integers
	ptr = &var1;               //pointer points to var1
	cout << ptr << endl;       //print pointer value
	ptr = &var2;               //pointer points to var2
	cout << ptr << endl;       //print pointer value
	return 0;
}

Program ini mendefinisikan dua variabel integer, var1 dan var2, dan menginisialisasi mereka ke nilai-nilai 11 dan 22. Ini kemudian mencetak alamat mereka.

Pointer untuk void

Sebelum kita melanjutkan untuk melihat pointer di tempat kerja, kita harus mencatat satu kekhasan tipe data pointer. Biasanya, alamat yang Anda letakkan di pointer harus sama dengan pointer. Kamu tidak bisa tetapkan alamat variabel float ke pointer ke int, misalnya:

float flovar = 98.6;
int* ptrint = &flovar;  //ERROR: can’t assign float* to int*

Namun, ada pengecualian untuk ini. Ada semacam pointer tujuan umum yang bisa menunjuk untuk semua tipe data. Ini disebut pointer to void, dan didefinisikan seperti ini:

void* ptr;   //ptr can point to any data type

Contoh berikutnya menggunakan pointer ke void dan juga menunjukkan bahwa, jika Anda tidak menggunakan void, Anda harus berhati-hatilah untuk memberikan pointer alamat dengan tipe yang sama dengan pointer. Inilah daftar untuk PTRVOID:

// ptrvoid.cpp
// pointers to type void
#include <iostream>
using namespace std;
int main()
{
	int intvar;                //integer variable
	float flovar;              //float variable
	int* ptrint;               //define pointer to int
	float* ptrflo;             //define pointer to float
	void* ptrvoid;             //define pointer to void
	ptrint = &intvar;          //ok, int* to int*
	// ptrint = &flovar;          //error, float* to int*
	// ptrflo = &intvar;          //error, int* to float*
	ptrflo = &flovar;          //ok, float* to float*
	ptrvoid = &intvar;         //ok, int* to void*
	ptrvoid = &flovar;         //ok, float* to void*
	return 0;
}

Pointers dan Arrays

Ada hubungan erat antara pointer dan array. Program berikut, ARRNOTE, menyediakan ulasan.

// arrnote.cpp
// array accessed with array notation
#include <iostream>
using namespace std;
int main()
{                                       //array
	int intarray[5] = { 31, 54, 77, 52, 93 };
	for (int j = 0; j < 5; j++)                  //for each element,
		cout << intarray[j] << endl;         //print value
	return 0;
}

Pernyataan tersebut mencetak setiap elemen array secara bergantian. Misalnya, ketika j adalah 3, ekspresi intarray [j] mengambil nilai int array [3] dan mengakses elemen array keempat, antarmuka int 52. Ini output dari ARRNOTE:

31
54
77
52
93

Ordering dengan Pointer

Program pertama mirip dengan program, “Objek dan Kelas,” kecuali bahwa itu menggunakan pointer bukan referensi. Ini memerintahkan dua nomor yang diteruskan sebagai argumen menukar mereka jika yang kedua lebih kecil dari yang pertama. Inilah daftar untuk PTRORDER:

// ptrorder.cpp
// orders two arguments using pointers
#include <iostream>
using namespace std;
int main()
{
    void order(int*, int*);         //prototype
    int n1 = 99, n2 = 11;               //one pair ordered, one not
    int n3 = 22, n4 = 88;
    order(&n1, &n2);                //order each pair of numbers
    order(&n3, &n4);
    cout << "n1=" << n1 << endl;    //print out all numbers
    cout << "n2=" << n2 << endl;
    cout << "n3=" << n3 << endl;
    cout << "n4=" << n4 << endl;
    return 0;
}
//--------------------------------------------------------------
void order(int* numb1, int* numb2) //orders two numbers
{
    if (*numb1 > * numb2)             //if 1st larger than 2nd,
    {
        int temp = *numb1;           //swap them
        *numb1 = *numb2;
        *numb2 = temp;
    }
}

Urutan fungsi order( ) berfungsi sama seperti di REFORDER, kecuali bahwa ia dilewatkan alamat nomor yang akan dipesan, dan mengakses nomor menggunakan pointer. Itu adalah, numb1 mengakses nomor di main () yang dilewatkan sebagai argumen pertama, dan * numb2 mengakses kedua.

Output :

n1=11
n2=99
n3=22
n4=88

Kami akan menggunakan fungsi order () dari PTRORDER dalam program contoh kami berikutnya, PTRSORT, yang mengurutkan array bilangan bulat.

// ptrsort.cpp
// mengurutkan array menggunakan pointer
#include <iostream>
using namespace std;
int main()
{
	void bsort(int*, int);       //prototype
	const int N = 10;            //array size
	//test array
	int arr[N] = { 37, 84, 62, 91, 11, 65, 57, 28, 19, 49 };
	bsort(arr, N);               //sort the array
	for (int j = 0; j < N; j++)       //print out sorted array
		cout << arr[j] << " ";
	cout << endl;
	return 0;
}
//--------------------------------------------------------------
void bsort(int* ptr, int n)
{
	void order(int*, int*);      //prototype
	int j, k;                    //indexes to array
	for (j = 0; j < n - 1; j++)         //outer loop
		for (k = j + 1; k < n; k++)      //inner loop starts at outer
			order(ptr + j, ptr + k);   //order the pointer contents
}
//--------------------------------------------------------------
void order(int* numb1, int* numb2)  //orders two numbers
{
	if (*numb1 > * numb2)          //if 1st larger than 2nd,
	{
		int temp = *numb1;        //swap them
		*numb1 = *numb2;
		*numb2 = temp;
	}
}

Array integer array di main () diinisialisasi ke nilai yang tidak disortir. Alamat array, dan jumlah elemen, diteruskan ke fungsi bsort (). Ini mengurutkan array, dan nilai yang diurutkan kemudian dicetak. Inilah output dari PTRSORT:

11 19 28 37 49 57 62 65 84 91

Sekian dari penjelasan mengenai pointers C++ pada artikel kali ini, jika ada salah kata atau kesalahan lainnya mohon dimaafkan, terimakasih

admin Membahas dengan sederhana rumus-rumus yang ada di matematika dan finansial - Bagi Aja

Leave a Reply

Your email address will not be published. Required fields are marked *