Pointer NULL Bahasa C Beserta Fungsi dan Penjelasannya
- Untuk menginisialisasi sebuah variabel pointer dimana variabel pointer tersebut tidak titetapkan untuk alamat memori valid apapun.
- Untuk memeriksa sebuah pointer null sebeleum dilakukan akses ke variabel pointer apapun. Juga, dapat dilakukan menanganan error pada kode program yang berkaitan dengan pointer atau variabel pointer dereferensi jika nilainya tidak NULL.
- Untuk melewatkan sebuah pointer null ke argumen fungsi, pada kondisi dimana tidak ingin dilewatkan nilai alamat memori valid apapun.
Sintak: int * pInt = NULL;
if(pInt != NULL) /*We could use if(pInt) as well*/
{ /*Some code*/} else { /*Some code*/}
#include <stdio.h>
int main()
{
int *i, *j;
int *ii = NULL, *jj = NULL;
if(i == j)
{
printf("This might get printed if both i "
"and j are same by chance.");
}
if(ii == jj)
{
printf("This is always printed coz "
"ii and jj are same.");
}
return 0;
}
"Ekspresi konstanta integer dengan nilai 0, atau ekspresi cast ke tipe void *, adalah disebut sebagai konstanta pointer null. Jika sebuah konstanta pointer null dikonversi ke sebuah tipe pointer, maka pointer hasil disebut sebagai pointer null, yang dijamin untuk dibandingkan tidak sama dengan sebuah pointer ke object atau fungsi apapun."
int * ptr = 0;
Catatan: pada statement C, diketahui bahwa nilai 0 digunakan pada konteks pointer dan memiliki makna yang berbeda pada nilai 0 yang digunakan sebagai nilai integer. Ini merupakan salah satu alasan mengapa penggunaan preferensi NULL digunakan, karena hal tersebut memberikan makna eksplisit pada kode program yang digunakan oleh programmer pada pointer null, bukan menggunakan integer 0. Konsep penting lainnya tentang NULL adalah "Ekspansi NULL untuk implementasi definisi konstanta pointer null", dimana statement tersebut juga berasal dari klausa 7.19 pada standar C11, yang berarti bahwa representasi internal dari pointer null dapat berupa non-zero bit pattern ke proses pengangkutan pointer NULL. Oleh karena itu, nilai NULL tidak selalu dibutuhkan pada representasi internal yang digunakan sebagai zeros bit pattern. Sebuah implementasi kompilator dapat memilih untuk merepresentasikan "konstanta pointer null" sebagai sebuah bit pattern untuk sebuah bagian pertamanya atau lainnya. Namun demikian, tidak perlu terlalu mencemaskan tentang penggunaan nilai internal dari pointer null kecuali melibatkan coding kompilator atau level lebih rendah dari suatu coding. Pada umumnya, nilai NULL merupakan suatu nilai yang merepresentasikan sebuah nilai bit yang diatur ke nilai 0 saja. Untuk mengetahui secara lebih spesifik terhadap penggunannya pada suatu platform, maka perhatikan contoh berikut:
Contoh:
#include<stdio.h>
int main()
{
printf("%d",NULL);
return 0;
}
Contoh: penggunaan sizeof(NULL) pada Bahasa C.
#include<stdio.h>
int main()
{
printf("%lu",sizeof(NULL));
return 0;
}
Contoh:
#include<stdio.h>
int main()
{
int * ptr = NULL;
printf("%d",*ptr);
return 0;
}
Karena nilai NULL umumnya didefinisikan sebagai ((void*)0), maka pada standar C11 klausa 6.2.5, berbunyi "tipe void dibandingkan sebagai sekumpulan kosong dari suatu nilai; yang merupakan tipe object tidak lengkap yang tidak dapat dilengkapi". Meskipun pada C11 klausa 6.5.3.4 disebutkan bahwa "Operator sizeof seharusnya tidak diterapkan pada ekspresi yang memiliki tipe fungsi atau tipe tidak lengkap, (baik itu) ke nama dalam tanda kurung dari jenis tersebut, atau ke ekspresi yang menunjuk anggota bit-field."
Pada dasarnya, ini berarti bahwa void adalah tipe yang tidak lengkap yang ukurannya tidak masuk akal dalam program Bahasa C, tetapi implementasi (seperti gcc) tetap dapat menggunakan sizeof(void) sebagai nilai 1, sehingga memori datar yang ditunjuk oleh pointer void dapat dilihat sebagai memori tidak diketik, yaitu urutan byte.
Contoh:
#include<stdio.h>
int main()
{
printf("%lu",sizeof(void));
return 0;
}
Contoh:
#include<stdio.h>
int main()
{
printf("%lu",sizeof(void *));
return 0;
}
- Harus selalu menginisialisasi variabel pointer sebagai nilai NULL.
- Harus selalu menampilkan pemeriksaan nilai NULL sebelum dilakukan akses oleh pointer apapun.
- Perbedaan Antara const char *p, char * const p, dan const char * const p Bahasa C
- Pointer Ke Array Bahasa C dan Penjelasannya
- Enum Bahasa C dan Penjelasannya
- Struct Bahasa C dan Penjelasannya
- Union Bahasa C dan Penjelasannya
- Struct Hack Bahasa C dan Penjelasannya
- Anggota Structure, Padding, dan Data Packing Bahasa C
5 komentar untuk "Pointer NULL Bahasa C Beserta Fungsi dan Penjelasannya"
Hubungi admin melalui Wa : +62-896-2414-6106
Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.
Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.
- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -
Apa yang dimaksud dengan poinver null pada bahasa C?
BalasHapusPointer Null pada bahasa C merupakan variabel dalam bahasa pemrograman C yang memiliki nilai nol atau memiliki alamat yang tidak menunjuk nilai apapun.
HapusApa kegunaan dari pointer null pada bahas C?
BalasHapusPointer null pada bahas C digunakan untuk menginisialisasi variabel pointer ketika variabel pointer tersebut belum diberi nilai alamat memori yang valid.
HapusPointer null digunakan untuk meneruskan pointer ke argumen fungsi ketika tidak ingin dilakukan penerusan alamat memori yang bernilai valid.
Hapus