Pointer NULL
Termasuk bagian Logika dan Alur dalam perjalanan C di Coddy. Pelajaran 5 dari 63.
Terkadang kamu perlu mendeklarasikan pointer, tetapi belum memiliki alamat memori yang valid untuk langsung diberikan kepadanya. Dalam situasi ini, penting untuk menginisialisasi pointer dengan nilai khusus yang disebut NULL.
Pointer NULL adalah pointer yang tidak menunjuk ke alamat memori yang valid. Dalam C, NULL biasanya didefinisikan sebagai 0 atau (void*)0. Saat kamu menginisialisasi pointer dengan NULL, kamu secara eksplisit menyatakan bahwa pointer tersebut saat ini tidak menunjuk ke apa pun yang berguna.
int *ptr = NULL; // Inisialisasi pointer ke NULL
printf("%p", ptr); // Ini akan mencetak 0 atau (nil)Menginisialisasi pointer ke NULL dianggap sebagai praktik pemrograman yang baik karena mencegah pointer-mu berisi nilai acak yang tidak valid. Pointer yang belum diinisialisasi mungkin berisi alamat memori acak apa pun, yang dapat menyebabkan perilaku tak terduga jika kamu tidak sengaja mencoba menggunakannya.
Kamu dapat memeriksa apakah pointer bernilai NULL sebelum menggunakannya. Ini membantu mencegah crash dan membuat kodemu lebih tangguh. Pemeriksaan keamanan ini menjadi sangat penting saat programmu semakin kompleks.
Tantangan
MudahTulis program C yang menunjukkan inisialisasi dan pemeriksaan pointer NULL yang benar. Programmu harus:
- Mendeklarasikan pointer ke integer bernama
safe_ptrdan menginisialisasinya dengan NULL - Mendeklarasikan pointer ke karakter bernama
char_ptrdan menginisialisasinya dengan NULL - Memeriksa apakah
safe_ptradalah NULL menggunakan pernyataan if, lalu mencetak "safe_ptr is NULL" jika benar - Memeriksa apakah
char_ptradalah NULL menggunakan pernyataan if, lalu mencetak "char_ptr is NULL" jika benar - Mencetak alamat memori yang tersimpan di
safe_ptrmenggunakanprintfdengan penentu format%p - Mencetak alamat memori yang tersimpan di
char_ptrmenggunakanprintfdengan penentu format%p
Outputmu harus menampilkan hasil dalam format berikut:
safe_ptr is NULL
char_ptr is NULL
safe_ptr address: [address]
char_ptr address: [address]Alamat memori sebenarnya akan ditampilkan sebagai 0, (nil), atau representasi NULL serupa, bergantung pada sistemmu, tetapi format dan labelnya harus sama persis seperti yang ditunjukkan di atas.
Coba sendiri
#include <stdio.h>
int main() {
// TODO: Tulis kodemu di sini
// Deklarasikan dan inisialisasikan pointer-mu
// Periksa apakah pointer bernilai NULL
// Cetak output yang diminta
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