Pemrograman Dasar pt 12

Okay. . . okay. . .
Here we go to the pointer baby!

Akhirnya benar2 masuk ke teori juga, , , lha dari kemaren tuh persentasi trus si. . . bosen.😦 Seperti biasa, Pak Bondhan menggunakan buku “Apress Beginning C 4th Edition” (Lihat Chapter 7). Biar lebih mudah, pak Bondhan hanya menjelaskan contoh2 program yang ada di situ. . .

Contoh 1:

/* Program 7.1 Program sederhana yang menggunakan pointer */

#include <stdio.h>

int main()

{

int number = 0; /* Variabel yang typenya integer, diinisialisasikan 0*/
int *pointer = NULL; /* Sebuah pointer yang dapat menunjuk ke type int (Maksud NULL adalah belum menunjuk apapun) */

number = 10; /* number diisi 10 */
printf(“\nalamat number: %p”, &number); /* Menampilkan alamat number (menggunakan & dan %p) */
printf(“\nisi number: %d\n\n”, number); /* Menampilkan nilai dari variabel number */

pointer = &number; /* Mengisi pointer dengan alamat number (&number artinya alamat number) */
printf(“alamat pointer: %p”, &pointer); /* Menampilkan alamat pointer */
printf(“\nyang ditunjuk pointer: %p”, pointer); /* Menampilkan isi pointer (sebuah alamat) */
printf(“\nisi yang ditunjuk: %d\n”, *pointer); /* Menampilkan isi yang ditunjuk oleh pointer */
printf(“\npointer’s size: %d bytes”, sizeof(pointer)); /* Besar ukuran pointer */

return 0;

}

Tampilannya:

alamat number: 0022FF74
isi number: 10

alamat pointer: 0022FF70
yang ditunjuk pointer: 0022FF74
isi yang ditunjuk: 10

pointer’s size 4 bytes

Dengan contoh pertama tersebut, dapat kita simpulkan bahwa pointer adalah semacam variabel yang bisa diisi oleh alamat variabel lain, lalu untuk menampilkan isi yang ditunjuk pointer, jangan lupa menggunakan tanda *. Langsung ke contoh berikutnya!

Contoh 2:

Pada contoh kedua ini, harap membacanya dengan pelan, dan jangan dulu melihat hasil tampilannya seperti apa. Contoh 2 ini semacam tes, jika anda sudah bisa benar membayangkan bagaimana hasilnya, maka anda sudah lumayan mengerti pointer, jika salah, maka anda sudah mendapat ilmu dan tidak akan melakukan kesalahan yang sama.🙂

/* Program 7.2 Apa itu Pointer */

#include <stdio.h>

int main()

{

long num1 = 0l;
long num2 = 0l;
long *pnum = NULL;

pnum = &num1; /* Mengisi pnum dengan alamat num1 */
*pnum = 2; /* Menset num1 = 2 */
++num2; /* Increment num2 */
num2 += *pnum; /* num2 bertambah sebesar num1 */
pnum = &num2; /* Mengisi pnum dengan alamat num2 */
++*pnum; /* Increment num2 secara tidak langsung */
printf(“\nnum1 = %ld num2 = %ld *pnum = %ld *pnum + num2 = %ld\n”, num1, num2, *pnum, *pnum + num2);

return 0;

}

. . .

. .

.

Tampilannya:

num1 = 2     num2 = 4     *pnum = 4     *pnum + num2 = 8

Pelajaran yang dapat kita petik dari contoh ini adalah, yang di tunjuk oleh pnum dapat diganti2 (yang pertamanya pnum = &num1, lalu diganti jadi pnum = &num2). Pengubahan pada isi pointer, juga berpengaruh pada variabel aslinya (pada saat pnum = &num1, lalu *pnum = 2 (jangan lupa tanda * nya), maka num1 juga sama dengan 2). Penggunaan * maksudnya adalah isi dari yang ditunjuk oleh pointer. Ya gitulah. . . hha🙂

Jika anda ingin menggunkan scanf() pada variabel num1 (sebagai contoh), melalui pointer, kita tidak perlu menggunakan tanda &, karena pointer tuh sudah menyatakan alamat.

Yang biasa:
scanf(“%d”, &num1);

Melalui pointer:
pointer = &num1;
scanf(“%d”, pointer);

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: