Senin, November 18, 2019

Const Qualifier pada Bahasa C

Const Qualifier dapat diterapkan untuk pendeklarasian dari variabel apapun untuk menentukan bahwa nilai dari variabel tersebut tidak dapat diubah yang bergantung dimana variabel const tersebut disimpan, tetapi, bisa dilakukan pengubahan nilai dari variabel const dengan menggunakan pointer. Hasilnya adalah implementasi yang ditentukan jika telah dilakukan upaya pengubahan terhadap nilai variabel const.

satu, Pointer ke variabel

int *ptr;

Dapat dilakukan pengubahan nilai dari ptr dan juga dapat dilakukan pengubahan nilai dari object ptr yang dituju. Pointer dan nilai yang dituju pointer, keduanya disimpan pada area read-write. Perhatikan potongan kode program berikut ini:

Output:
    *ptr: 10
    *ptr: 20
    *ptr: 100

dua, Pointer menuju Konstanta
Pointer ke konstanta dapat dideklarasikan dengan dua cara:

const int *ptr;

atau dengan cara

int const *ptr;

Dapat dilakukan perubahan pointer ke nilai variabel, tetapi tidak bisa dilakukan perubahan nilai dari object (atau entitas) yang dituju dengan menggunakan pointer ptr. Pointer disimpan dalam area read-write (bertumpuk pada present case). Object yang ditunjuk pointer mungkin berada pada area read-only atau pada area read-write. Perhatikan contoh program berikut ini:

Output:
error: assignment of read-only location ‘*ptr’

Perhatikan contoh lainnya dimana variabel i adalah konstanta.

Output:
error: assignment of read-only location ‘*ptr’

Kualifikasi lebih rendah tidak ijinkan pada c++ dan akan menyebabkan munculnya peringatan pada bahasa C. Perhatikan contoh lain dengan kualifikasi lebih rendah (down qualification).


tiga, Konstanta pointer ke variabel.

int *const ptr;

Contoh sebelumnya adalah bentuk konstanta pointer ke variabel integer, yang berarti dapat dilakukan perubahan nilai dari object yang dituju oleh pointer (integer), tetapi tidak bisa melakukan perubahan nilai pointer untuk menunjuk ke nilai lainnya.

Output:
error: assignment of read-only variable ‘ptr’

empat, Konstanta pointer ke konstanta

const int *const ptr;

Deklarasi contoh program sebelumnya adalah pointer konstanta yang menuju ke variabel konstanta, dengan kata lain tidak dapat dilakukan perubahan nilai yang ditunjuk oleh pointer seperti halnya tidak bisa menunjuk pointer ke variabel lainnya. Perhatikan contoh program berikut ini:

Output:
error: assignment of read-only variable ‘ptr’
error: assignment of read-only location ‘*ptr’






Related Posts

Const Qualifier pada Bahasa C
Oleh

"semoga yang memberikan komentar diberikan berkah kebaikan dari Allah, dijauhkan dari kejahatan, dan diberikan pahala ilmu dan amal jariyah dari sepenggal kata yang ia tinggalkan amiin :) "