1 / 21

Pointer

Algoritma dan Struktur Data. Pointer. Ramos Somya , S.Kom ., M.Cs. Pointer ( variabel penunjuk ). Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari suatu variabel lain.

ursa
Download Presentation

Pointer

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Algoritma dan Struktur Data Pointer Ramos Somya, S.Kom., M.Cs.

  2. Pointer (variabelpenunjuk) • Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari suatu variabel lain. • Dengan kata lain, variabel pointer tidak memegang nilai, tetapi memegang alamat dari variabel lain. • Pointer merupakan variabel level rendah yang dapat digunakan untuk menunjuk nilai integer, character, float, double, atau single, dan bahkan tipe-tipe data lain yang didukung oleh bahasa C.

  3. Pointer (variabelpenunjuk) • Karena pointer tidak memegang nilai tetapi memegang alamat, maka dalam pointer terdapat dua bagian, yaitu pointer itu sendiri yang memegang alamat dan alamat tersebut menunjuk ke suatu nilai. • Jadi perlu dicatat mulai sekarang, supaya tidak bingung, dalam pointer ada alamat dan nilai yang ditunjuk.

  4. Kegunaan Pointer Mengapa harus menggunakan POINTER dalam bahasa C? • Pada variabel biasa kita tidak perlu tahu alamat memory dari variabel tersebut. Untuk mengakses hanya perlu nama variabel tersebut. Tapi untuk struktur data dinamis (linked list, tree dsb) hal tersebut tidak bisa.

  5. Kegunaan Pointer • Untuk membangun struktur data dinamik, yaitu struktur data yang dibangun pada saat program berjalan dengan mengalokasikan satu blok memori. • Pointer dalam bahasa C digunakan untuk menangani parameter variabel yang dilewatkan pada fungsi. • Dalam bahasa C digunakan untuk mengakses informasi yang disimpan dalam bentuk array.

  6. VariabelBiasavs Pointer

  7. Deklarasi Pointer Bentuk Umum: tipe_data *nama_pointer; Contoh: int *nilai; char *huruf; • Pendeklarasian variabel pointer menggunakan tanda * sebelum nama variabelnya. • Sedangkan untuk menampilkan nilai yang ditunjuk oleh suatu variabel pointer, juga digunakan operator * • Untuk menampilkan alamat tempat penyimpanan nilai yang ditunjuk oleh suatu variabel pointer, digunakan operator &

  8. Contoh #include <stdio.h> void main() { int i, j; int *p; /* pointer ke integer */ p = &i; *p=5; j=i; printf("%d %d %d\n", i , j, *p); } • Output?

  9. Penjelasan • Baris int *p adalah mendeklarasikan sebuat variabel pointer yang bernama p. • Tanda (*) digunakan untuk menyatakan variabel pointer. • Baris p = &i; adalah pemberian nilai (assignment) alamat variabel i kepada variabel p. Dalam bahasa C , & disebut operator alamat. Pernyataan &i berarti adalah “alamat memori dari variabel i”. • Sebelum baris tersebut dieksekusi maka p bernilai acak yang tidak diketahui alamatnya. Oleh karena itu kalau pointer (p) tidak diberi nilai akan menyebabkan kesalahan segmentasi (segmentation fault).

  10. Penjelasan • Pernyataan p = &i menyebabkan satu lokasi memiliki dua nama yaitu i itu sendiri dan *p. • Dengan demikian jelas bahwa pointer p terdiri dari dua bagian yaitu p adalah lokasi yang menyimpan alamat dan *p adalah lokasi yang menyimpan nilai yang ditunjuk oleh p. • Pernyataan *p = 5 berarti bahwa lokasi yang ditunjuk oleh p diberi nilai 5. Karena lokasi tersebut juga bernama i, maka pernyataan tersebut juga menyebabkan nilai menjadi 5. • Dan selanjutnya j=i berarti j diberi nilai 5 juga. dan akhirnya perintah printf menghasilkan 5 5 5.

  11. Contoh #include<stdio.h> void main() { int *p, a = 25, b; p = &a; b = *p; printf("Nilai a = %d di alamat %p\n",a,p); printf("Nilai b = %d di alamat %p\n",b,p); }  output?

  12. contoh #include <stdio.h> void main() { int i,j; int *p; /* pointer ke integer */ printf("%d %d\n",p,&i); p = &i; printf("%d %d\n",p,&i); }  Output?

  13. Penjelasan • Program tersebut memberitahukan kepada compiler untuk mencetak alamat yang dipegang oleh p dan alamat dari i. • Variabel p akan memberikan sembarang nilai atau 0 dan &i (alamat i) bernilai besar sekali. • Dengan demikian outputnya tidak tentu, tetapi sebagai salah satu contohnya adalah sebagai berikut.

  14. Contoh #include <stdio.h> void main() { int *p; /* a pointer to an integer */ printf("%d\n", *p); } • Output?

  15. Penjelasan • Program tersebut memberitahukan kompiler untuk mencetak nilai yang ditunjuk oleh p. Tetapi karena p belum diberi nilai awal, maka nilainya adalah alamat 0 dan menghasilkan segmentation fault, karena menunjuk ke alamat yang tidak ada.

  16. Pointer sebagai parameter #include <stdio.h> void swap(inti, int j) { int t; t = i; i = j; j = t; } void main() { inta,b; a = 5; b = 10; printf("%d %d\n", a, b); swap(a, b); printf("%d %d\n", a, b); }

  17. Contoh #include <stdio.h> void swap(int *i, int *j) { int t; t = *i; *i = *j; *j = t; } void main() { inta,b; a = 5; b = 10; printf("%d %d\n", a, b); swap(&a,&b); printf("%d %d\n", a, b); }

  18. Contoh #include <stdio.h> int nama_fungsi(int *b) { *b = *b + 1; } main() { int x = 1; nama_fungsi(&x); printf("%d",x); } Output??

  19. Pointer untukStruktur Data Dinamik • Struktur data dinamik adalah struktur data yang dapat bertambah atau berkurang sesuai dengan kebutuhan pada saat program berjalan. • Bila suatu blok memori tidak digunakan lagi dalam program maka blok memori tersebut dilepas supaya dapat digunakan untuk keperluan lain.

  20. Contoh: #include <stdio.h> #include <stdlib.h> void main() { int *p; p=(int *) malloc (sizeof(int)); *p=10; printf("%d\n",*p); free(p); }  output??

  21. Terima Kasih

More Related