Bahasa C
Dalam tutorial ini, Anda akan belajar tentang pointer; apa petunjuknya, bagaimana Anda menggunakannya, dan kesalahan umum yang mungkin Anda hadapi saat bekerja dengannya dengan bantuan contoh.
Penunjuk adalah fitur canggih dari pemrograman C dan C++. Sebelum kita mempelajari pointer, mari kita pelajari tentang alamat dalam pemrograman C.
Jika Anda memiliki variabel var dalam program Anda, &var
akan memberi Anda alamatnya di memori.
Kami telah menggunakan alamat berkali-kali saat menggunakan scanf()
fungsi.
scanf("%d", &var);
Di sini, nilai yang dimasukkan oleh pengguna disimpan di alamat var variabel. Mari kita ambil contoh kerja.
#include <stdio.h>
int main()
{
int var = 5;
printf("var: %d\n", var);
// Notice the use of & before var
printf("address of var: %p", &var);
return 0;
}
Keluaran
var: 5 address of var: 2686778
Catatan: Anda mungkin akan mendapatkan alamat yang berbeda saat menjalankan kode di atas.
Pointer (variabel pointer) adalah variabel khusus yang digunakan untuk menyimpan alamat daripada nilai.
Inilah cara kita mendeklarasikan pointer.
int* p;
Di sini, kita telah mendeklarasikan sebuah pointer p dari int
ketik.
Anda juga dapat mendeklarasikan pointer dengan cara ini.
int *p1;
int * p2;
Mari kita ambil contoh lain untuk mendeklarasikan pointer.
int* p1, p2;
Di sini, kita telah mendeklarasikan sebuah pointer p1 dan variabel normal p2 .
Mari kita ambil contoh.
int* pc, c;
c = 5;
pc = &c;
Di sini, 5 ditugaskan ke c variabel. Dan, alamat c ditugaskan ke pc penunjuk.
Untuk mendapatkan nilai benda yang ditunjuk oleh pointer, kita menggunakan *
operator. Misalnya:
int* pc, c;
c = 5;
pc = &c;
printf("%d", *pc); // Output: 5
Di sini, alamat c
ditugaskan ke pc penunjuk. Untuk mendapatkan nilai yang disimpan di alamat itu, kami menggunakan *pc .
Catatan: Pada contoh di atas, pc adalah pointer, bukan *pc
. Anda tidak dapat dan tidak boleh melakukan sesuatu seperti *pc = &c
;
Omong-omong, *
disebut operator dereference (ketika bekerja dengan pointer). Ini beroperasi pada pointer dan memberikan nilai yang disimpan dalam pointer itu.
Mari kita ambil contoh.
int* pc, c;
c = 5;
pc = &c;
c = 1;
printf("%d", c); // Output: 1
printf("%d", *pc); // Ouptut: 1
Kami telah menetapkan alamat c ke pc penunjuk.
Kemudian, kami mengubah nilai c ke 1. Sejak pc dan alamat c adalah sama, *pc
memberi kita 1.
Mari kita ambil contoh lain.
int* pc, c;
c = 5;
pc = &c;
*pc = 1;
printf("%d", *pc); // Ouptut: 1
printf("%d", c); // Output: 1
Kami telah menetapkan alamat c ke pc penunjuk.
Kemudian, kami mengubah *pc
ke 1 menggunakan *pc = 1;
. Sejak pc dan alamat c adalah sama, c akan sama dengan 1.
Mari kita ambil satu contoh lagi.
int* pc, c, d;
c = 5;
d = -15;
pc = &c; printf("%d", *pc); // Output: 5
pc = &d; printf("%d", *pc); // Ouptut: -15
Awalnya, alamat c ditugaskan ke pc penunjuk menggunakan pc = &c;
. Sejak c adalah 5, *pc
memberi kita 5.
Kemudian, alamat d ditugaskan ke pc penunjuk menggunakan pc = &d;
. Sejak d adalah -15, *pc
memberi kita -15.
Mari kita ambil contoh kerja.
#include <stdio.h>
int main()
{
int* pc, c;
c = 22;
printf("Address of c: %p\n", &c);
printf("Value of c: %d\n\n", c); // 22
pc = &c;
printf("Address of pointer pc: %p\n", pc);
printf("Content of pointer pc: %d\n\n", *pc); // 22
c = 11;
printf("Address of pointer pc: %p\n", pc);
printf("Content of pointer pc: %d\n\n", *pc); // 11
*pc = 2;
printf("Address of c: %p\n", &c);
printf("Value of c: %d\n\n", c); // 2
return 0;
}
Keluaran
Address of c: 2686784 Value of c: 22 Address of pointer pc: 2686784 Content of pointer pc: 22 Address of pointer pc: 2686784 Content of pointer pc: 11 Address of c: 2686784 Value of c: 2
Penjelasan program
int* pc, c;
int
, dibuat. c = 22;
pc = &c;
c = 11;
*pc = 2;
Misalkan, Anda ingin pointer pc untuk menunjuk ke alamat c . Kemudian,
int c, *pc;
// pc is address but c is not
pc = c; // Error
// &c is address but *pc is not
*pc = &c; // Error
// both &c and pc are addresses
pc = &c; // Not an error
// both c and *pc values
*pc = c; // Not an error
Berikut adalah contoh sintaks pointer yang sering membingungkan pemula.
#include <stdio.h>
int main() {
int c = 5;
int *p = &c;
printf("%d", *p); // 5
return 0;
}
Mengapa kami tidak mendapatkan kesalahan saat menggunakan int *p = &c;
?
Itu karena
int *p = &c;
setara dengan
int *p:
p = &c;
Dalam kedua kasus, kami membuat pointer p
(bukan *p
) dan menetapkan &c
untuk itu.
Untuk menghindari kebingungan ini, kita dapat menggunakan pernyataan seperti ini:
int* p = &c;
Sekarang Anda tahu apa itu pointer, Anda akan mempelajari bagaimana pointer terkait dengan array di tutorial berikutnya.
Bahasa C
Petunjuk C++ Dalam tutorial ini, kita akan belajar tentang pointer di C++ dan cara kerjanya dengan bantuan contoh. Dalam C++, pointer adalah variabel yang menyimpan alamat memori dari variabel lain. Alamat di C++ Jika kita memiliki variabel var dalam program kami, &var akan memberi kita alamatnya
Panggilan C++ dengan Referensi:Menggunakan pointer [Dengan Contoh] Dalam tutorial ini, kita akan belajar tentang panggilan C++ dengan referensi untuk meneruskan pointer sebagai argumen ke fungsi dengan bantuan contoh. Dalam tutorial Fungsi C++, kita belajar tentang meneruskan argumen ke suatu fungs
Pointer memberikan banyak kemungkinan untuk fungsi C yang kami batasi untuk mengembalikan satu nilai. Dengan parameter pointer, fungsi kita sekarang dapat memproses data aktual daripada salinan data.Untuk mengubah nilai variabel yang sebenarnya, pernyataan panggilan meneruskan alamat ke parameter po
Dalam bahasa pemrograman, konsep tertentu membuat pengkodean menjadi lebih mudah. Misalnya, penunjuk kosong menentukan tipe data spesifik dari input pengguna akhir dalam bahasa pemrograman C. Oleh karena itu, membawa kita untuk membahas pointer kosong di C. Seperti yang lain, pointer kosong memili