Lompat ke konten Lompat ke sidebar Lompat ke footer

Perbedaan Antara const char *p, char * const p, dan const char * const p Bahasa C

Terdapat beberapa bentuk penggunaan antara keyword const dan operator '*' pada penggunaan pointer pada bahasa C.

Perbedaan Antara const char *p, char * const p, dan const char * const p Bahasa C
Penggunaan Char Pointer Bahasa C

Sebelum memahami lebih dalam materi tentang Perbedaan Antara const char *p, char * const p, dan const char * const p Bahasa C, terlebih dahulu pelajari materi tentang: Keyword Restrict Bahasa C Beserta Penjelasannya [klik], Linked List Bahasa C Beserta Fungsi dan Penjelasannya [klik], dan Pointer Near, Far, dan Huge Bahasa C Beserta Penjelasannya [klik].

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.

const char *ptr: merupakan sebuah pointer yang menuju ke karakter konstanta, dimana nilai dari konstanta yang ditunjuk oleh pointer tidak dapat diubah pointer pointer ptr, namun pointer yang menunjuk dapat diubah nilainya. "const char *" adalah sebuah pointer non konstanta yang menuju ke sebuah konstanta tipe char.

Baca Juga:

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.

Artikel ini didedikasikan kepada: Agus Wulansari, Ahmad Choirul Umam, Alif Kusuma Dharu, Ana Sofiana, dan Anggreani Eka Lestari.

5 komentar untuk "Perbedaan Antara const char *p, char * const p, dan const char * const p Bahasa C"

  1. Apa yang dimaksud dengan Const char *P pada bahasa C?

    BalasHapus
    Balasan
    1. Const char *p merupakan sebuah pointer yang menuju ke karakter konstan.

      Hapus
    2. Pointer Const char *p memiliki makna bahwa nilai yang disimpan dalam pointer tersebut tidak dapat dilakukan perubahan nilainya.

      Hapus
    3. Ponter dapat digunakan untuk mengakses nilai karakter data, tetapi data yang diakses itu sendiri tidak dapat dilakukan modifikasi nilai.

      Hapus
    4. Pointer Const char *p berguna untuk menyimpan jenis string karakter yang nilainya tidak dapat atau tidak boleh diubah.

      Hapus

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 -