Makalah Pointer Ysnta
Makalah Pointer Ysnta
POINTER
Oleh:
Nama : Yasinta Shabilla
NIM : 2023903430046
Kelas : TRKJ 1.C
Jurusan : Teknologi Informasi dan Komputer
Program Studi : Teknologi Rekayasa Komputer Jaringan
Dosen Pembimbing :Indrawati, SST. MT
1
BAB I
PENDAHULUAN
1. Pengertian POINTER
2
1.2. Mendeklarasikan Variabel Pointer
tipe *nama_variabel
Sebagai contoh:
3
dipergunakan dengan cara mendeklrasikan contoh,apabila x dideklrasikan dengan
variable bertipe int, maka
&x
Px = &x;
Pernyataan di atas berarti bahwa px diberi nilai berupa alamat dari variable
x .Setelah pernyataan tersebut dieksekusi barulah dapat dikatakan bahwa px
menunjuk ke variable x.
*px
Yang menyatakan “isi atau nilai variable/data yang ditunjuk oleh pointer
px*.Sebagai contoh jika y bertipe int , maka sesudah dua pernyataan berikut
px = &x;
y = *px;
y akan berisi nilai yang sesuai dengan nilai x .berikut adalah contoh
program nya
4
#include <stdio>
Int main(){
x = 87;
printf(“Isi px = %p\n”,px)
printf(“Isi x = %d\n,x);
printf(“Nilai y = %d\n,y);
Contoh Eksekusi:
A>PTR1
Alamat x = FFEO
Isi px = FFEO
Isi x = 87
Nilai y = 87
5
Pada Program diatas , dua pernyataan
px = &x;
y = *px;
y = x;
y = &px;
#include <stdio.h>
int main(){
float *pu;
6
float *nu;
int u = 1234;
nu = *pu;
printf(“u = %d\n”,u);
printf(“nu = %f\n”,nu);
pu = &u;
nu = *pu;
Gambar 1.3. Ilustrasi kesalahan yang terjadi karena tipe pointer dan tipe
data yang ditunjuk tidak sejenis
7
1.6. Mengubah Isi Suatu Variabel Melalui Pointer
d = 54.5;
pd = &d;
d = d + 10;
pd = &d;
pernyataan
*pd = d + 10;
d = d + 10;
8
#include <stdio.h>
Float d, *pd;
d = 54.5;
pd = %d;
Contoh eksekusi:
dan
int *ptgl;
9
Kemudian diberikan instruksi
ptgl = tgl_lahir;
maka ptgl akan berisi alamat dari elemen array tgl_lahir yang berindeks
nol.Instruksi di atas juga dapat ditulis menjadi
ptgl = tgl_lahir;
sebab nama array tanpa tanda kurung menyatakan alamat awal dari
array.Sesudah penugasan di atas,
*ptgl
#include <stdio.h>
int main(){
int *ptgl;
ptgl = tgl_lahir;
Contoh eksekusi:
10
Jika ingin menampilkan seluruh elemen array tgl_lahir , perintah yang
bias digunakan berupa
printf(“%d “, tgl_lahir[i]);
tgl_lahir[i]
*(ptgl + i)
ptgl = tgl_lahir;
printf(“%d”, *(ptgl + i ) );
Contoh program:
#include <stdio.h>
int main(){
int i;
int *ptgl;
11
for(i = 0 ; i < 3 ; i++)
printf(“%d\n, *(ptgl + i) );
Contoh eksekusi:
24
1965
*(pa + i)
Ungkapan seperti
pa + i
int *pa;
12
Cara lain dalam menampilkan isi suatu array yaitu dengan
menaikkan isi variable pointer memakai operator ++. Berikut adalah contoh lain
dari program yang di atas .Pada program ini
*(ptgl+i)
Diganti menjadi
ptgl++
#include <stdio.h>
int main(){
int i;
int *ptgl;
Contoh eksekusi:
24
1965
13
1.8. Pointer dan String
#include <stdio.h>
main(){
puts(pkota);
Contoh eksekusi:
Semarang
14
Pernyataan di ats menyerupai pernyataan
Dengan cara ini, ptr akan menunjuk pada string str. Dalam kode berikut
menetapkan alamat string strke pointer ptr.
15
Variabel penunjuk ptrdialokasikan alamat memori 8000 dan menyimpan
alamat variabel string str yaitu 1000.
#include <stdio.h>
int main(void) {
// string variable
// pointer variable
while(*ptr != '\0') {
printf("%c", *ptr);
ptr++;
return 0;
16
1.8.3. Menggunakan pointer untuk menyimpan string
Kita dapat mencapai hasil yang sama dengan membuat penunjuk karakter
yang menunjuk pada nilai string yang disimpan di beberapa lokasi memori.
#include <stdio.h>
int main(void) {
char *t = strPtr;
while(*t != '\0') {
printf("%c", *t);
t++;
return 0;
17
Dalam kode di atas kita menggunakan penunjuk karakter lain tuntuk
mencetak karakter string karena kita tidak ingin kehilangan alamat awal string
"Halo" yang disimpan dalam variabel penunjuk strPtr.
char *namahari[10];
{“Senin”,
18
“Selasa”,
“Rabu”,
“Kamis”,
“Jumat”,
“Sabtu”,
“Minggu”,
};
dan sebagainya.
19
Untuk membentuk rantai pointer seperti di atas ,pendeklarasian yang
diperlukan berupa
int var_x;
int *ptr1;
int **ptr2;
ptr = &var_x;
ptr2 = &ptr1;
#include <stdio.h>
main(){
20
ptr1=&var_x; /* ptr1 berisi alamat dari var_x */
Contoh eksekusi:
21
Fungsi diatas dimaksudkkan agar kalau dipanggil variable yang
berkaitan dengan parameter actual dapat diubah nilai nya,masing-masing
dinaikkan sebesar 2.Contoh pemanggilan:
Naikkan_nilai(&a, &b);
Dalam hal ini variable a dan variable b heruslah ditulis diawali dengan
operator alamat (&) yang berarti menyatakan alamat variable,sebab
parameter fungsi dalam pendefinisian berupa pointer.
Berikut contoh program nya:
#include <stdio.h>
void naikkan_nilai (int *x, int *y);
main(){
int a = 3
int b = 7
printf(“Nilai awal:a = %d b = %d\n”,a, b);
naikkan_nilai(&a, &b);
printf(“Nilai akhir:a = %d b = %d\n”,a, b);
}
void naikkan_nilai (int *x, int *y)
{
*x = *x + 2;
*y = *y + 2;
}
Contoh eksekusi:
Nilai awal: a = 3 b = 7
Nilai akhir: a = 5 b = 9
Pointer Sebagai Keluaran Fungsi
Suatu fungsi dapat dibuat agar keluarannya berupa
pointer.Misalnya,suatu fungsi menghasilkan keluaran berupa pointer yang
menunjuk ke string nama bulan, seperti pada contoh berikut:
char *nama_bulan(int n)
{
22
static char *bulan[] =
{ “Kode bulan salah”,
“Januari”,
“Februari”,
“Maret”,
“April”,
“Mei”,
“Juni”,
“Juli”,
“Agustus”,
“September”,
“Oktober”,
“November”,
“Desember”,
char*nama_bulan
23
String “Kode bulan salah” (bulan[0] jika masukan fungsi: n<1 atau n>12
Bulan[n] untuk n yang terletak antara 1 sampai dengan 12.
#include <stdio.h>
char *nama_bulan(int n);
main(){
int bl;
“Mei”,
“Juni”,
“Juli”,
“Agustus”,
“September”,
“Oktober”,
24
“November”,
“Desember”,
};
Contoh eksekusi:
Bulan (1..12): 13
Bulan (1..12): 4
April
Contoh:
Maka *pointer1 akan bisa mengakses data yang ada pada alamat
memori 00001. Dengan kata lain, si *pointer1 akan menggunakan alamat 00001
sebagai referensinya. Kita juga bisa membuat pointer tanpa harus mengisinya
langsung dengan alamat memori.
25
Maka *pointer_ku akan menggunakan alamat memori 00000, alamat
memori ini khusus untuk menyimpan data null atau data kosong.
Sekarang masalahnya kita tidak bisa lihat daftar alamat memori secara
langsung, kita akan kesulitan memberikan referensi alamat memori untuk
pointer.Solusi dari permasalahan ini adalah Kita harus mengambil alamat memori
dari variabel yang lain dengan menggunakan simbol &
Pada gambar ini, kita membuat pointer dengan nama *ptr_hp* dengan isi alamat
memori dari variabel hp dengan demikian Pointer *ptr_hp akan bisa mengakses
nilai pada alamat memori 02ffd yang mana ini adalah alamat memori dari variabel
hp.Jika kita ingin mengubah nilai pada alamat memori tersebut, maka kita bisa
gunakan pointer *ptr_hp seperti berikut ini:
Maka, sekarang alamat memori 02ffd akan berisi 95 begitu juga dengan
variabel hp.
26
1.13.1. Mengakses data dengan Pointer
Output:
Pointer juga punya alamat memorinya sendiri. Pada contoh di atas, alamat
memori dari pointer *ptr_hp adalah d57ba70.
27
Perhatikan gambar berikut ini:
Alamat memori yang dipakai *ptr_hp adalah 012ef dengan isi alamat
memori 02ffd.
Operasi Penugasan
Suatu variable pointer seperti halnya variable yang lain, juga bisa mengalami
operasi penugasan. Nilai dari suatu variable pointer dapat disalin ke variable
pointer yang lain
Operator (&) dalam kaitannya dengan pointer adalah operator yang
mengembalikan alamat memori dari operandnya. Contohnya :
int y = 5; /*deklarasi variabel y*/
int *yPtr; /*deklarasi variabel pointer yPtr*/
yPtr = &y; /*mengisi variabel pointer yPtr dengan
alamat dari variabel y*/
Maka representasi dari operasi penugasan di atas adalah
28
Representasi yang lain, misalnya asumsikan bahwa variabel y berada
pada alokasi memori 600000 dan variabel pointer yPtr berada pada alokasi
memori 500000.
Contoh program:
Ouput :
29
Operasi Aritmatika
float *vPtr = v;
30
Jika kita melakukan operasi aritmatika seperti
vPtr += 2;
dalam perhitungan aritmatika biasa, maka vPtr yang semula berisi 3000 menjadi
3000 + 2 = 3002, namun ini tidak berlaku pada pointer. Operasi aritmatika pada
pointer di atas artinya adalah vPtr yang semula menunjuk pada v[0] sekarang
menunjuk ke v[2].Karena vPtr menunjuk alamat memori dari variabel v yang
bertipe float, maka vPtr sekarang berisi 3008 (3000 + 2 * 4).
Contoh program :
Output:
31
1.15. Struktur Dan Pointer
Pointer ke Struktur
int z;
z = (*pos_xy).x;
(*pos_xy).x = (*pos_xy).y;
(*pos_xy).y = z;
menyatakan bahwa post_xy adalah pointer yang menunjuk ke obyek yang bertipe
struktur coordinat.Adapun penulisan nya seperti di bawah ini
(*pos_xy).x
*pos_xy.x
32
Mempunyai makna yang berbeda dengan
(*pos_xy).x
Contoh Program:
Ouput:
33
BAB II
KESIMPULAN
Pointer adalah tipe data yang nilainya mengacu pada nilai lain yang
disimpan di tempat lain di memori komputer menggunakan alamatnya.
Pointer dilambangkan dengan simbol ‘*’.
Fungsi utama pointer yaitu memungkinkan suatu program agar
melaksanakan kerja lebih efisien dan praktis.
Pointer mengambil address dari suatu variabel. Address merupakan alamat
lokasi suatu memori dari sebuah variabel. Address berupa angka random
atau angka acak dari sebuah variabel.
34
DAFTAR PUSTAKA
https://dyclassroom.com/c/c-pointers-and-strings
https://www.petanikode.com/c-pointer/
http://moenawar.web.id/wp-content/uploads/2018/03/SD-Lab-5-6-pointer-
dan-fungsi.pdf
https://www.sobatambisius.com/2021/09/belajar-bahasa-c-7-pointer.html
https://www.belajarstatistik.com/blog/2021/12/04/pointer-dalam-bahasa-c/
35