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

C - Pointer

Pointer dalam C mudah dan menyenangkan untuk dipelajari. Beberapa tugas pemrograman C dilakukan lebih mudah dengan pointer, dan tugas lain, seperti alokasi memori dinamis, tidak dapat dilakukan tanpa menggunakan pointer. Jadi perlu mempelajari pointer untuk menjadi programmer C yang sempurna. Mari mulai mempelajarinya dengan langkah-langkah sederhana dan mudah.

Seperti yang Anda ketahui, setiap variabel adalah lokasi memori dan setiap lokasi memori memiliki alamat yang ditentukan yang dapat diakses menggunakan operator ampersand (&), yang menunjukkan alamat di memori. Perhatikan contoh berikut, yang mencetak alamat variabel yang didefinisikan

Demo Langsung
#include <stdio.h>

int main () {

   int  var1;
   char var2[10];

   printf("Address of var1 variable: %x\n", &var1  );
   printf("Address of var2 variable: %x\n", &var2  );

   return 0;
}

Ketika kode di atas dikompilasi dan dieksekusi, menghasilkan hasil sebagai berikut

Address of var1 variable: bff5a400
Address of var2 variable: bff5a3f6

Apa itu Pointer?

Penunjuk adalah variabel yang nilainya merupakan alamat dari variabel lain, yaitu alamat langsung dari lokasi memori. Seperti variabel atau konstanta apa pun, Anda harus mendeklarasikan pointer sebelum menggunakannya untuk menyimpan alamat variabel apa pun. Bentuk umum dari deklarasi variabel pointer adalah

type *var-name;

Di sini, ketik adalah tipe dasar pointer; harus berupa tipe data C yang valid dan var-name adalah nama variabel pointer. Tanda bintang * yang digunakan untuk mendeklarasikan pointer sama dengan tanda bintang yang digunakan untuk perkalian. Namun, dalam pernyataan ini tanda bintang digunakan untuk menunjuk variabel sebagai penunjuk. Lihatlah beberapa deklarasi pointer yang valid −

int    *ip;    /* pointer to an integer */
double *dp;    /* pointer to a double */
float  *fp;    /* pointer to a float */
char   *ch     /* pointer to a character */

Tipe data aktual dari nilai semua pointer, apakah integer, float, karakter, atau lainnya, adalah sama, angka heksadesimal panjang yang mewakili alamat memori. Satu-satunya perbedaan antara pointer dari tipe data yang berbeda adalah tipe data dari variabel atau konstanta yang ditunjuk pointer.

Bagaimana Cara Menggunakan Pointer?

Ada beberapa operasi penting, yang akan sering kita lakukan dengan bantuan pointer. (a) Kami mendefinisikan variabel pointer, (b) menetapkan alamat variabel ke pointer dan (c) akhirnya mengakses nilai di alamat yang tersedia di variabel pointer. Ini dilakukan dengan menggunakan operator unary * yang mengembalikan nilai variabel yang terletak di alamat yang ditentukan oleh operandnya. Contoh berikut menggunakan operasi ini

Demo Langsung
#include <stdio.h>

int main () {

   int  var = 20;   /* actual variable declaration */
   int  *ip;        /* pointer variable declaration */

   ip = &var;  /* store address of var in pointer variable*/

   printf("Address of var variable: %x\n", &var  );

   /* address stored in pointer variable */
   printf("Address stored in ip variable: %x\n", ip );

   /* access the value using the pointer */
   printf("Value of *ip variable: %d\n", *ip );

   return 0;
}

Ketika kode di atas dikompilasi dan dieksekusi, menghasilkan hasil sebagai berikut

Address of var variable: bffd8b3c
Address stored in ip variable: bffd8b3c
Value of *ip variable: 20

NULL Pointer

Itu selalu merupakan praktik yang baik untuk menetapkan nilai NULL ke variabel pointer jika Anda tidak memiliki alamat yang tepat untuk ditetapkan. Ini dilakukan pada saat deklarasi variabel. Pointer yang diberi NULL disebut null penunjuk.

Pointer NULL adalah konstanta dengan nilai nol yang ditentukan di beberapa pustaka standar. Perhatikan program berikut

Demo Langsung
#include <stdio.h>

int main () {

   int  *ptr = NULL;

   printf("The value of ptr is : %x\n", ptr  );
 
   return 0;
}

Ketika kode di atas dikompilasi dan dieksekusi, menghasilkan hasil sebagai berikut

The value of ptr is 0

Di sebagian besar sistem operasi, program tidak diizinkan mengakses memori di alamat 0 karena memori tersebut dicadangkan oleh sistem operasi. Namun, alamat memori 0 memiliki arti khusus; itu menandakan bahwa penunjuk tidak dimaksudkan untuk menunjuk ke lokasi memori yang dapat diakses. Tetapi menurut konvensi, jika sebuah pointer berisi nilai null (nol), diasumsikan tidak menunjuk ke apa pun.

Untuk memeriksa penunjuk nol, Anda dapat menggunakan pernyataan 'jika' sebagai berikut −

if(ptr)     /* succeeds if p is not null */
if(!ptr)    /* succeeds if p is null */

Penunjuk dalam Detail

Pointer memiliki banyak konsep tetapi mudah dan sangat penting untuk pemrograman C. Konsep pointer penting berikut ini harus jelas bagi programmer C mana pun −

No.Sr. Konsep &Deskripsi
1 Aritmatika penunjuk

Ada empat operator aritmatika yang dapat digunakan dalam pointer:++, --, +, -

2 Array pointer

Anda dapat mendefinisikan array untuk menampung sejumlah pointer.

3 Penunjuk ke penunjuk

C memungkinkan Anda untuk memiliki pointer pada pointer dan sebagainya.

4 Meneruskan pointer ke fungsi di C

Melewati argumen dengan referensi atau dengan alamat memungkinkan argumen yang diteruskan diubah dalam fungsi pemanggilan oleh fungsi yang dipanggil.

5 Mengembalikan pointer dari fungsi di C

C memungkinkan fungsi untuk mengembalikan pointer ke variabel lokal, variabel statis, dan juga memori yang dialokasikan secara dinamis.


Bahasa C

  1. C Variabel, Konstanta dan Literal
  2. Kelas Penyimpanan C
  3. C Pointer
  4. Hubungan Antara Array dan Pointer
  5. C Pass Alamat dan Pointer
  6. C struct dan Pointer
  7. Kata Kunci Global Python
  8. C++ Pointer dengan Contoh
  9. Variabel C, Tipe Data, Konstanta
  10. Pointer dalam C:Apa itu Pointer dalam Pemrograman C? Jenis