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

Menguasai Pointer C: Tutorial Praktis dengan Panduan Ahli

Menguasai Pointer C

Jelajahi konsep inti pointer di C, dari alamat memori hingga contoh praktis dan jebakan umum. Ditulis untuk pengembang yang ingin memenuhi pemahaman mereka dengan kode dunia nyata.

Pointer adalah fondasi pemrograman C yang efisien. Sebelum menyelami pointer, mari kita tinjau bagaimana alamat memori bekerja dalam C.


Alamat Memori dalam C

Jika Anda memiliki variabel var, ekspresi &var menghasilkan alamat tempat var disimpan.

Manipulasi alamat sering muncul, misalnya dalam scanf():

scanf("%d", &var);

Ini menyimpan input pengguna langsung ke lokasi memori var. Demo singkat:

#include <stdio.h> int main() { int var = 5; printf("var: %d\n", var); printf("alamat var: %p", &var); return 0; }

Keluaran

var: 5 alamat var: 0x7fffc1a2b1c8

Catatan: Alamat akan berbeda pada setiap jalankan dan sistem.


Apa Itu Pointer?

Pointer adalah variabel yang menyimpan alamat memori bukan nilai konvensional. Dengan menyimpan alamat, pointer memungkinkan akses indirekt ke data, memungkinkan manajemen memori dinamis, struktur data yang efisien, dan kontrol sistem tingkat rendah.

Mendeklarasikan Pointer

Sintaks deklarasi umum:

int *p;

Variasi juga umum:

int *p1; int *p2;

Perhatikan bahwa spasi di sekitar bintang tidak mempengaruhi deklarasi. Namun, hati-hati dengan deklarasi yang dipisahkan koma:

int *p1, p2; /* p1 adalah pointer, p2 adalah int */

Menugaskan Alamat ke Pointer

Contoh:

int *pc, c; c = 5; pc = &c;

Di sini, c menerima nilai 5, dan pc menyimpan alamat c.


Mengurai Pointer

Untuk mengakses nilai yang disimpan di alamat yang dirujuk pointer, gunakan operator dereferensi *:

int *pc, c; c = 5; pc = &c; printf("%d", *pc); /* Mencetak 5 */

Ingat, pc adalah pointer; *pc mengambil nilai yang ditunjuknya. Mencoba menugaskan alamat ke *pc (misalnya, *pc = &c;) tidak valid.

Operator * dikenal sebagai operator dereferensi.


Mengubah Nilai Melalui Pointer

Anda dapat mengubah data dasar melalui pointernya:

int *pc, c; c = 5; pc = &c; *pc = 1; /* c menjadi 1 */ printf("%d", c); /* Mencetak 1 */

Beberapa variabel dapat berbagi pointer yang sama setelah pengisian ulang:

int *pc, c, d; c = 5; d = -15; pc = &c; printf("%d", *pc); /* 5 */ pc = &d; printf("%d", *pc); /* -15 */

Contoh Praktis

Jalankan program lengkap ini untuk mengamati bagaimana nilai pointer tetap konstan sementara data yang dirujuknya dapat berubah:

#include <stdio.h> int main() { int *pc, c; c = 22; printf("Alamat c: %p\n", &c); printf("Nilai c: %d\n\n", c); pc = &c; printf("Alamat pointer pc: %p\n", pc); printf("Isi pointer pc: %d\n\n", *pc); c = 11; printf("Alamat pointer pc: %p\n", pc); printf("Isi pointer pc: %d\n\n", *pc); *pc = 2; printf("Alamat c: %p\n", &c); printf("Nilai c: %d\n\n", c); return 0; }

Keluaran

Alamat c: 0x7fffc1a2b1c8 Nilai c: 22 Alamat pointer pc: 0x7fffc1a2b1c8 Isi pointer pc: 22 Alamat pointer pc: 0x7fffc1a2b1c8 Isi pointer pc: 11 Alamat c: 0x7fffc1a2b1c8 Nilai c: 2

Penjelasan

  1. int *pc, c; – mendeklarasikan pointer pc dan int c.
  2. c = 22; – menyimpan 22 di memori c.
  3. pc = &c; – menunjuk pc ke c.
  4. c = 11; – memperbarui nilai melalui akses langsung.
  5. *pc = 2; – mengubah nilai melalui pointer.

Kesalahan Umum dengan Pointer

Kesalahan umum termasuk mencampur pointer dan nilai:

int c, *pc; // Salah – menugaskan nilai ke pointer pc = c; // Error // Salah – mencoba menugaskan alamat ke pointer yang diurai *pc = &c; // Error // Benar – menugaskan alamat ke pointer pc = &c; // OK // Benar – menugaskan nilai ke lokasi yang ditunjuk *pc = c; // OK

Untuk pemula, sintaks int *p = &c; dapat membingungkan. Ini setara dengan:

int *p; p = &c;

Menulisnya sebagai int* p = &c; mengurangi ambigu.


Sekarang Anda memahami pointer, Anda siap untuk menjelajahi hubungan mereka dengan array dalam tutorial berikutnya.


Bahasa C

  1. C# Hello World – Membangun Aplikasi C# Pertama Anda
  2. Memahami Kata Kunci dan Pengidentifikasi C#: Aturan, Daftar, dan Praktik Terbaik
  3. Menguasai Variabel dan Tipe Data Primitif C#: Panduan Lengkap
  4. Operator C# – Panduan Lengkap tentang Operator dalam C#
  5. Menguasai Operator Bitwise dan Bit Shift C#: Panduan Komprehensif
  6. Dasar-Dasar C#: Esensial Input dan Output
  7. Ekspresi, Pernyataan, dan Blok C#: Panduan Komprehensif dengan Contoh Praktis
  8. Menguasai Komentar C#: Jenis, Praktik Terbaik, dan Dokumentasi XML
  9. Menguasai Pointer C: Tutorial Praktis dengan Panduan Ahli
  10. Memahami Hubungan Antara Array dan Pointer dalam C