Pointer sebagai Parameter
Pelajaran 7 dari 14 dalam kursus Pointer C++ di Coddy.
Penggunaan fungsi dalam pemrograman sangat umum. Kita menggunakannya sebagai alat untuk menyelesaikan tugas berulang kali, atau setidaknya untuk menata dan memisahkan kode kita.
Saat kita meneruskan nilai ke fungsi, nilai yang kita gunakan di dalam fungsi adalah salinan dari nilai aslinya. Di sinilah meneruskan nilai sebagai pointer ke fungsi menjadi berguna.
void swap(int x, int y) {
int temp = x;
x = y;
y = temp;
cout << x << " " << y << endl;
}
int main() {
int a = 10, b = 20;
cout << a << " " << b << endl;
swap(a, b);
cout << a << " " << b;
}Output:
10 20
20 10
10 20Seperti yang kamu lihat, awalnya nilainya normal. Saat kita meneruskannya ke fungsi, salinan dari nilai aslinya dibuat. Salinan tersebut ditukar, lalu kita mencetak nilai yang sudah ditukar. Terakhir, kita bisa melihat bahwa setelah pemanggilan fungsi di fungsi main, hasilnya tidak permanen dan nilainya kembali normal. Masalah ini dapat diatasi dengan menggunakan pointer.
void swap(int *x, int *y) {
int temp = *x;
*x = *y;
*y = temp;
cout << *x << " " << *y << endl;
}
int main() {
int a = 10, b = 20;
cout << a << " " << b << endl;
swap(&a, &b);
cout << a << " " << b;
}Output:
10 20
20 10
20 10Masalahnya sudah teratasi. Sekarang, alih-alih meneruskan nilai, kita meneruskan alamat tempat nilai tersebut berada. Sebagai argumen, fungsi menerima pointer yang menyimpan alamat tersebut. Kita membuat integer temp, yang mengambil nilai hasil dereferensi dari x. Nilai pada alamat x (yang alamatnya sama dengan a di fungsi main()) diubah menjadi nilai y (nilai awal dari alamat b), lalu terakhir y yang didereferensi mengambil nilai temp. Karena kita mengubah nilai pada alamat yang diberikan, bukan nilai yang diberikan, perubahan tersebut bersifat permanen.
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Tantangan
MudahSelesaikan fungsi Calculator yang mengubah nilai variabel large dan small secara permanen. Kurangi large sebesar selisih antara large dan small, sedangkan small harus dikalikan dengan dirinya sendiri.
input
5 3
output
5 3
3 9
Penjelasan
Mengurangi 5 sebesar selisih antara 5 dan 3, yaitu 2, menghasilkan 5 - 2 = 3, sedangkan mengalikan 3 dengan dirinya sendiri menghasilkan 9
Catatan: JANGAN menulis fungsi main()
Coba sendiri
#include <iostream>
using namespace std;
void Calculator(// Terima argumen: large & small) {
// Tulis kode untuk perhitungan
}
// JANGAN tulis fungsi main()Semua pelajaran di Pointer C++
2Pointer & Reference
Pointer sebagai ParameterReference - &Reference sebagai ParameterPointer vs Reference3Alokasi Memori Dinamis
Operator new & deleteKebocoran Memoriarray DinamisPenyisipan pada array DinamisLatihan sendiri: Compiler C++ online