Pemrograman C: Meneruskan Alamat dan Pointer ke Fungsi – Panduan Praktis
Pemrograman C: Meneruskan Alamat dan Pointer ke Fungsi
Mahir dalam cara meneruskan alamat memori dan pointer ke fungsi dalam C, dengan contoh yang jelas dan penjelasan ahli.
Dalam C, meneruskan alamat bukan nilai memungkinkan fungsi untuk langsung memanipulasi variabel asli. Teknik ini, disebut pengiriman pointer, sangat penting untuk kode yang efisien dan untuk mengubah data di seluruh cakupan.
Contoh 1: Menukar Dua Integer melalui Referensi
#include <stdio.h> void swap(int *n1, int *n2); int main(void) { int num1 = 5, num2 = 10; /* Meneruskan alamat num1 dan num2 */ swap(&num1, &num2); printf("num1 = %d\n", num1); printf("num2 = %d", num2); return 0; } void swap(int *n1, int *n2) { int temp = *n1; *n1 = *n2; *n2 = temp; }
Menjalankan program ini menghasilkan:
num1 = 10 num2 = 5
Fungsi swap() menerima pointer n1 dan n2 yang menunjuk ke variabel asli num1 dan num2. Dengan mengurai pointer ini (*n1 dan *n2), fungsi menukar nilai aktual yang disimpan di memori, itulah sebabnya main() melihat angka yang diperbarui. Perhatikan bahwa swap() mengembalikan void karena ia memodifikasi argumennya secara langsung.
Contoh 2: Menaikkan Nilai melalui Pointer
#include <stdio.h> void addOne(int *ptr) { (*ptr)++; /* Menaikkan nilai di alamat yang diberikan */ } int main(void) { int i = 10; int *p = &i; addOne(p); printf("%d", *p); /* Mencetak 11 */ return 0; }
Di sini, p menyimpan alamat i. Fungsi addOne() menerima alamat yang sama, mengurai, dan menaikkan nilai dasarnya. Setelah pemanggilan, *p (dan akibatnya i) mencerminkan nilai baru 11.
Contoh-contoh ini menggambarkan kekuatan pengiriman pointer: fungsi dapat mengubah variabel yang didefinisikan di luar cakupannya, memungkinkan manipulasi data yang efisien tanpa menyalinan yang tidak perlu.