Mengubah Variabel melalui Pointer
Termasuk bagian Logika dan Alur dalam perjalanan C di Coddy. Pelajaran 27 dari 63.
Sekarang kamu bisa memanfaatkan kekuatan pointer yang sebenarnya: mengubah variabel asli melalui fungsi. Saat kamu meneruskan pointer ke fungsi, fungsi tersebut dapat menggunakan operator dereferensi untuk mengubah nilai yang tersimpan di alamat memori tersebut.
Di dalam fungsi, kamu melakukan dereferensi pointer menggunakan operator * untuk mengakses dan mengubah nilai variabel asli. Teknik ini disebut pass-by-reference karena kamu meneruskan referensi ke lokasi variabel di memori.
void doubleValue(int *ptr) {
*ptr = *ptr * 2; // Dereferensikan pointer untuk mengubah nilai aslinya
}
int main() {
int x = 5;
doubleValue(&x); // Teruskan alamat x
// x sekarang bernilai 10!
return 0;
}Kuncinya adalah menggunakan *ptr di sisi kiri penugasan untuk mengubah nilai pada alamat memori yang disimpan pointer. Ini memungkinkan fungsi mengubah variabel secara permanen dari fungsi pemanggil, sehingga membuka berbagai kemungkinan pemrograman hebat yang tidak dapat dicapai hanya dengan pengoperan berdasarkan nilai.
Tantangan
MudahTulis program C yang menunjukkan cara mengubah variabel melalui pointer dengan membuat fungsi yang mengalikan nilai integer dengan 3.
Programmu harus:
- Membuat fungsi bernama
tripleValueyang menerima pointer ke integer sebagai parameternya - Di dalam fungsi
tripleValue, menggunakan operator dereferensi untuk mengalikan nilai di alamat memori dengan 3 - Di dalam fungsi
tripleValue, mencetak nilai baru dengan format:Value tripled to: [value] - Di dalam fungsi
main, mendeklarasikan variabel integer bernamanumberdan menginisialisasinya dengan nilai 8 - Mencetak nilai awal dengan format:
Original value: [value] - Memanggil fungsi
tripleValuedan memberikan alamat variabelnumbermenggunakan operator address-of - Setelah pemanggilan fungsi, mencetak nilai akhir
numberdengan format:Final value: [value]
Output programmu harus menunjukkan bahwa fungsi berhasil mengubah variabel asli melalui pointer:
Original value: 8
Value tripled to: 24
Final value: 24Tantangan ini menunjukkan keunggulan pass-by-reference menggunakan pointer. Fungsi dapat mengubah variabel asli secara permanen dengan mendereferensi pointer dan mengubah nilai di lokasi memori tersebut.
Coba sendiri
#include <stdio.h>
// TODO: Tulis fungsi tripleValue-mu di sini
int main() {
// TODO: Tulis kodemu di sini
// Deklarasikan dan inisialisasi variabel number
// Cetak nilai awal
// Panggil fungsi tripleValue
// Cetak nilai akhir
return 0;
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Dasar-Dasar Pointer
Apa Itu Pointer?Mendeklarasikan PointerOperator Address-Of (&)Operator Dereference (*)Pointer NULLRekap: Dasar-Dasar Pointer4Proyek: Utilitas Teks Sederhana
Gambaran Umum ProyekMenghitung Karakter2Pointer dan array
Nama array sebagai pointerElemen array dan pointerAritmetika pointerMembandingkan pointerRangkuman: Menelusuri array dengan pointer5Pointer dan Fungsi
Penerusan dengan NilaiMeneruskan Pointer ke FungsiMengubah Variabel melalui PointerContoh Klasik: SwapMeneruskan Array ke FungsiRingkasan: Argumen Pointer Fungsi8Struct dan Pointer
Pointer ke StructOperator Panah (->)Mengirim Struct berdasarkan NilaiMengirim Pointer StructAlokasi Dinamis StructUlasan: Memodifikasi Struct dengan Pointer11Tantangan Rangkuman Akhir
Rangkuman: Penggabungan string DinamisRangkuman: array berisi structRangkuman: Penghitung Frekuensi Kata3Array char dan String
String sebagai array charPenanda akhir nullInput String dengan scanfMenggunakan strlen()Menggunakan strcpy()Menggunakan strcat()Menggunakan strcmp()Ulasan: Fungsi String DasarLatihan sendiri: Compiler C online