Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

Menguasai Pointer Konstan &Pointer ke Konstanta di C

Di C, sebuah penunjuk adalah variabel yang menyimpan alamat memori variabel lain, dan kata kunci const digunakan untuk mendefinisikan variabel atau pointer yang nilainya tidak dapat diubah setelah diinisialisasi. Saat kita menggabungkan pointer dengan konstan kata kunci, kita dapat mengontrol dua hal −

Dalam bab ini, kita akan melihat tiga variasi utama dari pointer konstan −

Penunjuk Konstan

Penunjuk konstan berarti penunjuk itu sendiri konstan. Setelah diinisialisasi untuk menunjuk ke lokasi memori, ia tidak dapat menunjuk ke lokasi lain, namun nilai yang disimpan di lokasi tersebut masih dapat diubah.

Berikut ini adalah sintaks penunjuk konstan

data_type *const pointer_name = &variable;

Dalam sintaksis ini, data_type adalah tipe data yang ditunjuk oleh penunjuk, *const membuat penunjuk itu sendiri konstan, nama_penunjuk adalah nama penunjuk, dan &variabel menugaskannya alamat memori suatu variabel.

Contoh Penunjuk Konstan

Dalam contoh ini, kita mendeklarasikan pointer konstan ptr dan inisialisasi dengan alamat variabel x . Kemudian, kita ubah nilai x menggunakan ptr dan kami mencetak nilainya.

#include <stdio.h>
int main() {
 int x = 10;
 int y = 20;
 int *const ptr = &x; // constant pointer to int
 printf("Value of x: %d\n", *ptr);
 *ptr = 15; // can change the value at address
 printf("Modified value of x: %d\n", *ptr);
 // ptr = &y; // changing pointer address is not allowed
 return 0;
}

Di bawah ini adalah keluaran dari program di atas, yang menunjukkan bahwa penunjuk tetap pada x , namun nilai x dapat diperbarui.

Value of x: 10
Modified value of x: 15

Contoh Kesalahan Penunjuk Konstan

Berikut ini contoh di mana kita mendeklarasikan pointer konstan ptr dan inisialisasi dengan alamat variabel x . Kemudian, kami mencoba mengarahkannya ke alamat variabel y . Ini akan menghasilkan kesalahan karena penunjuk konstan tidak dapat menunjuk ke lokasi memori lain setelah diinisialisasi.

#include <stdio.h>
int main() {
 int x = 10;
 int y = 20;
 int *const ptr = &x; // constant pointer to int
 printf("Value of x: %d\n", *ptr);
 // Attempting to change the pointer to point to y
 ptr = &y; // cannot change the address of a constant pointer
 return 0;
}

Anda dapat melihat kesalahan di bawah , menunjukkan bahwa kita tidak dapat mengubah alamat penunjuk konstan.

error: assignment of read-only variable 'ptr'

Penunjuk ke Konstanta

Penunjuk ke konstanta berarti nilai yang ditunjuknya tidak dapat diubah, tetapi penunjuknya sendiri dapat menunjuk ke alamat memori (atau variabel) yang berbeda.

Berikut ini adalah sintaks untuk penunjuk ke konstanta

const data_type *pointer_name = &variable;
data_type const *pointer = &variable;

Dalam sintaksis ini, const data_type atau data_type const berarti penunjuk menunjuk ke nilai konstan, nama_penunjuk adalah nama penunjuk, dan &variabel menugaskannya alamat variabel.

Contoh Pointer ke Konstanta

Dalam contoh ini, kami mendeklarasikan sebuah pointer ptr yang menunjuk ke nilai konstanta dan memberinya alamat variabel a . Kemudian, kita membuat penunjuk menunjuk ke alamat variabel b yang berbeda dan cetak nilainya.

#include <stdio.h>
int main() {
 int a = 5;
 int b = 30;
 const int *ptr = &a; // pointer to constant int
 printf("Value of a: %d\n", *ptr);
 // *ptr = 10; //we cannot modify value through pointer
 ptr = &b; // canging pointer address
 printf("Now pointing to b: %d\n", *ptr);
 return 0;
}

Berikut adalah keluarannya dari program di atas, menampilkan pointer yang sama yang menunjuk ke variabel berbeda.

Value of a: 5
Now pointing to b: 30

Contoh Pointer ke Kesalahan Konstan

Berikut ini contoh di mana kita mendeklarasikan pointer ke konstanta ptr dan inisialisasi dengan alamat variabel a . Kemudian, kami mencoba mengubah nilai a melalui penunjuk. Ini akan memberikan kesalahan karena penunjuk ke konstanta tidak mengizinkan pengubahan nilai yang ditunjuknya.

#include <stdio.h>
int main() {
 int a = 5;
 const int *ptr = &a; // pointer to constant int
 printf("Value of a: %d\n", *ptr);
 // we cnnot modify value through pointer to constant
 *ptr = 10; 
 return 0;
}

Di bawah ini Anda dapat melihat keluaran , yang menunjukkan kesalahan menunjukkan bahwa kita tidak dapat mengubah nilai melalui pointer ke konstanta.

error: assignment of read-only location '*ptr'

Penunjuk Konstan ke Konstan

Penunjuk konstan ke suatu konstanta adalah pointer yang tidak dapat mengubah alamat memorinya, dan nilai yang disimpan pada alamat memori tersebut juga tidak dapat diubah. Kedua tindakan tersebut dibatasi, jadi kami hanya dapat membaca nilainya saja, tidak ada yang lain.

Berikut ini adalah sintaks untuk penunjuk konstan ke suatu konstanta

const data_type *const pointer_name = &variable;

Dalam sintaksis ini −

Contoh Penunjuk Konstan ke Konstan

Dalam contoh ini, kita mendeklarasikan pointer konstan ke ptr konstan dan tetapkan alamat memori variabel a . Kami kemudian mencetak nilai a menggunakan penunjuk.

#include <stdio.h>
int main() {
 int a = 10;
 const int *const ptr = &a; // constant pointer to constant
 printf("Value of a: %d\n", *ptr);
 // *ptr = 15; // we cannot modify value
 // ptr = &b; // we annot change pointer location
 return 0;
}

Berikut adalah keluarannya dari program di atas−

Value of a: 10

Contoh Penunjuk Konstan ke Kesalahan Konstan

Dalam contoh ini, kita mendeklarasikan pointer konstan ke ptr konstan dan inisialisasi dengan variabel a . Kemudian, kami mencoba mengubah nilai melalui pointer dan juga mencoba membuat pointer menunjuk ke variabel lain. Kedua operasi tersebut tidak diperbolehkan dan akan mengakibatkan kesalahan kompiler .

#include <stdio.h>
int main() {
 int a = 10;
 int b = 20;
 const int *const ptr = &a; // constant pointer to constant
 printf("Value of a: %d\n", *ptr);
 // *ptr = 15; // we cnnot modify value
 // ptr = &b; // we cannot change pointer address
 return 0;
}

Di bawah ini Anda dapat melihat keluaran menunjukkan kesalahan−

Value of a: 10

Perbedaan antara Jenis Penunjuk Konstan

Tabel berikut menunjukkan perbedaan antara penunjuk konstan, penunjuk ke konstanta, dan penunjuk konstan ke konstanta.

Variasi Definisi Dapatkah Mengubah Alamat? Dapatkah Mengubah Nilai? Contoh Sintaks Penunjuk KonstanPenunjuk yang alamatnya tetap, namun nilai pada alamat tersebut dapat diubah.TidakYa
int *const p = &x;
Penunjuk ke KonstanPenunjuk yang dapat menunjuk ke alamat berbeda, namun tidak dapat mengubah nilai pada lokasi yang ditunjuk.YesNo
const int *p = &x;
Penunjuk Konstan ke KonstanPenunjuk yang alamatnya tetap, dan nilai pada alamat tersebut tidak dapat diubah.NoNo
const int *const p = &x;

Kesimpulan

Dalam bab ini, kita membahas pointer konstan dan pointer ke konstanta di C. Pointer konstan perbaiki alamatnya tetapi izinkan perubahan nilainya, penunjuk ke konstan izinkan perubahan alamat namun bukan nilainya, dan penunjuk konstan ke konstan batasi keduanya.


Bahasa C

  1. Komentar C++
  2. Penanganan Pengecualian C++
  3. C# - Tipe Data
  4. String C++
  5. Ruang nama di C++
  6. C# - Array
  7. Konstruktor C++
  8. Pernyataan sakelar C#
  9. C# - Multithreading
  10. C# if, if...else, if...else if dan Nested if Statement