Pointer juga merupakan variabel dan memainkan peran penting dalam bahasa pemrograman C. Mereka digunakan karena beberapa alasan, seperti:
Dan masih banyak lagi.
Pointer pada dasarnya adalah variabel integer sederhana yang menyimpan alamat memori yang menunjuk ke suatu nilai, bukan menyimpan nilai sebenarnya.
Memori komputer adalah penyimpanan data sekuensial, dan pointer menunjuk ke bagian tertentu dari memori. Program kita bisa menggunakan pointer sedemikian rupa sehingga pointer menunjuk ke sejumlah besar memori - tergantung seberapa banyak yang kita putuskan untuk baca dari titik itu.
Kita sudah membahas string, tetapi sekarang kita bisa menggali lebih dalam dan memahami apa sebenarnya string dalam C (yang disebut C-String untuk membedakannya dari string lain ketika dicampur dengan C++)
Baris berikut:
char * name = "John";
melakukan tiga hal:
name, yang merupakan pointer ke karakter tunggal.name untuk menunjuk ke tempat tinggal karakter J (yang diikuti oleh sisa string dalam memori).Jika kita mencoba mengakses variabel name sebagai array, itu akan bekerja, dan akan mengembalikan nilai ordinal dari karakter J, karena variabel name sebenarnya menunjuk tepat ke awal string. Karena kita tahu bahwa memori bersifat sekuensial, kita bisa berasumsi bahwa jika kita bergerak maju dalam memori ke karakter berikutnya, kita akan menerima huruf berikutnya dalam string, sampai kita mencapai akhir string, ditandai dengan terminator nol (karakter dengan nilai ordinal 0, dicatat sebagai \0).
Dereferencing adalah tindakan merujuk ke tempat yang ditunjuk oleh pointer, bukan alamat memori. Kita sudah menggunakan dereferencing dalam array - tetapi kita belum tahu itu. Operator kurung - [0] misalnya, mengakses item pertama dari array. Dan karena array sebenarnya adalah pointer, mengakses item pertama dalam array sama dengan dereferencing pointer.
Dereferencing pointer dilakukan menggunakan operator asterisk *.
Jika kita ingin membuat array yang akan menunjuk ke variabel yang berbeda dalam stack kita, kita bisa menulis kode berikut:
/* definisikan variabel lokal a */
int a = 1;
/* definisikan variabel pointer, dan arahkan ke a menggunakan operator & */
int * pointer_to_a = &a;
printf("Nilai a adalah %d\\n", a);
printf("Nilai a juga %d\\n", *pointer_to_a);
Perhatikan bahwa kita menggunakan operator & untuk menunjuk ke variabel a, yang baru saja kita buat. Kita kemudian merujuk ke variabel tersebut menggunakan operator dereferencing.
Kita juga bisa mengubah isi dari variabel yang di-dereferensikan:
int a = 1;
int * pointer_to_a = &a;
/* mari kita ubah variabel a */
a += 1;
/* kita baru saja mengubah variabel lagi! */
*pointer_to_a += 1;
/* akan mencetak 3 */
printf("Nilai dari a sekarang %d\\n", a);
| Operasi | Deskripsi | Contoh |
|---|---|---|
| Deklarasi | Mendeklarasikan variabel pointer | int *ptr; |
| Referencing | Mendapatkan alamat variabel | &variable |
| Dereferencing | Mengakses nilai di alamat pointer | *ptr |
| Penugasan | Menetapkan alamat ke pointer | ptr = &variable; |
Buat pointer ke variabel lokal n bernama pointer_to_n, dan gunakan untuk meningkatkan nilai n sebesar satu.
Requirements:
- Buat pointer ke variabel n
- Gunakan pointer untuk menaikkan nilai n
- Pastikan pointer menunjuk ke alamat variabel n
Expected Output:
Done!
Try writing your solution in the code editor below!
Current Lesson: Pointers
Learning Objectives:
- Memahami konsep pointer dalam bahasa C
- Belajar mendeklarasikan dan menggunakan pointer
- Mengenal operasi dereferencing dan referencing
- Memahami hubungan antara pointer dan array
Prerequisites:
- Pemahaman tentang variabel dan tipe data
- Pemahaman dasar tentang memori dalam program