Perbedaan Antara const char *p, char * const p, dan const char * const p Bahasa C
Qualifier const merupakan bentuk keyword yang dapat diterapkan ke deklarasi dari jenis variabel spesifik apapun dengan nilai yang telah ditetapkan sebelumnya tidak akan berubah atau tetap. Keyword const akan menerapkan apapun yang telah ditetapkan sebelumnya pada bagian kiri, jika tidak terdapat nilai apapun pada bagian kiri, maka keyword tersebut secara otomatis akan menerapkan apapun yang terdapat pada bagian kanan.
Contoh:
// Program Bahasa C untuk
// ilustrasi penggunaan char
// const *p.
#include<stdio.h>
#include<stdlib.h>
int main()
{
char a ='A', b ='B';
const char *ptr = &a;
//*ptr = b; merupakan
// statement ilegal karenna
// memberikan penugasan dari
// lokasi read-only*ptr.
// Sedangkan ptr dapat diubah.
printf( "value pointed to by ptr: %c\n", *ptr);
ptr = &b;
printf( "value pointed to by ptr: %c\n", *ptr);
}
Output:value pointed to by ptr:A
value pointed to by ptr:B
Catatan: Tidak terdapat berbedaan antara const char *p dan char const *p, karena keduanya adalah sama-sama pointer ke sebuah konstanta tipe char dan poisisi dari '*'(asterik) adalah bernilai sama.
char *const ptr: merupakan sebuah pointer konstanta yang menuju ke karakter non konstanta, dimana nilai konstanta yang dituju tidak dapat diubah oleh pointer ptr.
Contoh:
// Program Bahasa C untuk
// ilustrasi penggunaan char*
// const p.
#include<stdio.h>
#include<stdlib.h>
int main()
{
char a ='A', b ='B';
char *const ptr = &a;
printf( "Value pointed to by ptr: %c\n", *ptr);
printf( "Address ptr is pointing to: %d\n\n", ptr);
// ptr = &b; adalah statement
// ilegal yang memberikan
// penugasan dari variabel ptr
// yang bersifat read-only.
// Mengubah nilai pada bagian
// alamat yang ditunjuk oleh
// pointer ptr.
*ptr = b;
printf( "Value pointed to by ptr: %c\n", *ptr);
printf( "Address ptr is pointing to: %d\n", ptr);
}
Output:Value pointed to by ptr: A
Address ptr is pointing to: -1443150762
Value pointed to by ptr: B
Address ptr is pointing to: -1443150762
Catatan: Pointer akan selalu menunjuk ke nilai alamat yang sama, dimana yang berubah hanyalah nilai dari lokasinya saja.
const char * const ptr: merupakan sebuah pointer konstanta yang menuju ke karakter konstanta, dimana dapat dilakukan berubahan nilai terhadap variabel yang ditunjuk, sekaligus dapat dilakukan perubahan terhadap pointer yang menunjuk.
Contoh:
// Program Bahasa C untuk
// ilustrasi penggunaan const
// char * const ptr.
#include<stdio.h>
#include<stdlib.h>
int main()
{
char a ='A', b ='B';
const char *const ptr = &a;
printf( "Value pointed to by ptr: %c\n", *ptr);
printf( "Address ptr is pointing to: %d\n\n", ptr);
// ptr = &b; merupakan
// statement ilegal yang
// memberikan penugasan dari
// variabel ptr yang bersifat
// read-only.
// *ptr = b; merupakan
// statement ilegal yang
// memberikan penugasan dari
// lokasi *ptr yang bersifat // read-only.
}
Output:Value pointed to by ptr: A
Address ptr is pointing to: -255095482
Catatan: char const * const ptr adalah bernilai sama dengan const char *const ptr.
5 komentar untuk "Perbedaan Antara const char *p, char * const p, dan const char * const p Bahasa C"
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 Const char *P pada bahasa C?
BalasHapusConst char *p merupakan sebuah pointer yang menuju ke karakter konstan.
HapusPointer Const char *p memiliki makna bahwa nilai yang disimpan dalam pointer tersebut tidak dapat dilakukan perubahan nilainya.
HapusPonter dapat digunakan untuk mengakses nilai karakter data, tetapi data yang diakses itu sendiri tidak dapat dilakukan modifikasi nilai.
HapusPointer Const char *p berguna untuk menyimpan jenis string karakter yang nilainya tidak dapat atau tidak boleh diubah.
Hapus