#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
struct node{
int info;
struct node *next;
};
typedef struct node *simpul;
void main()
{
simpul baru, head=NULL, tail=NULL, temp;
int pilih;
do
{
printf("MENU\n");
printf("1. Insert\n");
printf("2. View\n");
printf("3. Search\n");
printf("4. Delete\n");
printf("PILIH: ");
scanf("%d", &pilih);
switch(pilih)
{
case 1:
int data;
printf("Data Masuk: ");
scanf("%i", &data);
baru = (simpul) malloc(sizeof (struct node));
baru->info = data;
baru->next = NULL; //tidak menuju simpul mana2
if (head == NULL) //khusus simpul pertama LL
{
head = baru; //pointer head, tail, baru sama
tail = baru;
}
else //untuk simpul2 berikutnya
{
tail->next = baru; //sambungkan di belakang
tail = baru;
}
break;
case 2:
temp = head; //tampilkan mulai dr depan
while(temp!=NULL) //ulangi sampai temp bernilai NULL
{
printf("%i ", temp->info);
temp = temp->next; //geser temp ke belakang
}
printf("\n");
break;
case 3:
int cari;
printf("Cari Angka: ");
scanf("%i", &cari);
temp = head;
while((temp!=NULL)&&(temp->info!=cari))
{
temp = temp->next;
}
if(temp != NULL && temp->info == cari)
printf("Data Ditemukan");
else //if(temp == NULL)
printf("Data Tidak Ditemukan");
printf("\n");
break;
case 4:
int hapus;
char jwb;
simpul prev = NULL;
printf("Hapus Angka: ");
scanf("%i", &hapus);
temp = head;
while((temp!=NULL)&&(temp->info!=hapus))
{
//prev selalu berada 1 simpul di belakang temp
prev = temp;
temp = temp->next;
}
if(temp != NULL && temp->info == hapus)
{
printf("Yakin Dihapus? (y/t)");
flushall();
jwb=getch();
if(jwb == 'y')
{
//jika hapus simpul di tengah
if(temp->next != NULL && temp != head)
prev->next = temp->next;
//jika hapus di depan dan tinggal 1 simpul
else if (temp == head && head->next == NULL)
{
head = NULL;
}
//jika hapus di depan tapi masih ada simpul berikutnya
else if (temp == head && head->next != NULL)
{
head = head->next;
}
//jika hapus di belakang
else if (temp->next == NULL)
{
prev->next = NULL;
tail = prev;
}
free(temp); //hapus dr memori
}
else
printf("Batal Dihapus");
}
else
printf("Data Tidak Ditemukan");
printf("\n");
break;
}
}while (pilih!=5);
}
Contoh Program Linked List Sederhana dalam Bahasa C
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
typedef struct simpul {
char nama[20];
float nilai;
struct simpul *next_simpul;
} simpulku;
void main()
{ simpulku *simpul1, *simpul2, *simpul3, *simpul4, *temp;
//alokasikan memorinya dulu
simpul1 = (simpulku *)malloc(sizeof(simpulku));
simpul2 = (simpulku *)malloc(sizeof(simpulku));
simpul3 = (simpulku *)malloc(sizeof(simpulku));
//isi data masing2 simpul
strcpy(simpul1->nama, "Amin");
strcpy(simpul2->nama, "Budi");
strcpy(simpul3->nama, "Citra");
simpul1->nilai=90; simpul2->nilai=20;
simpul3->nilai=100;
simpul1->next_simpul = NULL;
//sambungkan link masing2 simpul
simpul1->next_simpul = simpul2;
simpul2->next_simpul = simpul3;
simpul3->next_simpul = NULL;
//tampilkan hasilnya, mulai dr simpul 1
temp = simpul1; //cara satu per satu
printf("%s, %f\n", temp->nama, temp->nilai);
temp = temp->next_simpul;
printf("%s, %f\n", temp->nama, temp->nilai);
temp = temp->next_simpul;
printf("%s, %f\n", temp->nama, temp->nilai);
printf("\n");
temp = simpul1;
for(;temp!=NULL; temp=temp->next_simpul) //cara looping
printf("%s, %f\n", temp->nama, temp->nilai);
//skenario menambahkan simpul baru
simpul4 = (simpulku *)malloc(sizeof(simpulku)); //siapkan
strcpy(simpul4->nama, "Dewi");simpul4->nilai=80; //isi
simpul2->next_simpul = simpul4; //update link
simpul4->next_simpul = simpul3;
printf("\n");
temp = simpul1;
for(;temp!=NULL; temp=temp->next_simpul) //cara looping
printf("%s, %f\n", temp->nama, temp->nilai);
//menghapus simpul budi
simpul1->next_simpul = simpul4; //update link
free(simpul2); //hapus simpul
printf("\n");
temp = simpul1;
for(;temp!=NULL; temp=temp->next_simpul) //cara looping
printf("%s, %f\n", temp->nama, temp->nilai);
}
#include "stdlib.h"
#include "string.h"
typedef struct simpul {
char nama[20];
float nilai;
struct simpul *next_simpul;
} simpulku;
void main()
{ simpulku *simpul1, *simpul2, *simpul3, *simpul4, *temp;
//alokasikan memorinya dulu
simpul1 = (simpulku *)malloc(sizeof(simpulku));
simpul2 = (simpulku *)malloc(sizeof(simpulku));
simpul3 = (simpulku *)malloc(sizeof(simpulku));
//isi data masing2 simpul
strcpy(simpul1->nama, "Amin");
strcpy(simpul2->nama, "Budi");
strcpy(simpul3->nama, "Citra");
simpul1->nilai=90; simpul2->nilai=20;
simpul3->nilai=100;
simpul1->next_simpul = NULL;
//sambungkan link masing2 simpul
simpul1->next_simpul = simpul2;
simpul2->next_simpul = simpul3;
simpul3->next_simpul = NULL;
//tampilkan hasilnya, mulai dr simpul 1
temp = simpul1; //cara satu per satu
printf("%s, %f\n", temp->nama, temp->nilai);
temp = temp->next_simpul;
printf("%s, %f\n", temp->nama, temp->nilai);
temp = temp->next_simpul;
printf("%s, %f\n", temp->nama, temp->nilai);
printf("\n");
temp = simpul1;
for(;temp!=NULL; temp=temp->next_simpul) //cara looping
printf("%s, %f\n", temp->nama, temp->nilai);
//skenario menambahkan simpul baru
simpul4 = (simpulku *)malloc(sizeof(simpulku)); //siapkan
strcpy(simpul4->nama, "Dewi");simpul4->nilai=80; //isi
simpul2->next_simpul = simpul4; //update link
simpul4->next_simpul = simpul3;
printf("\n");
temp = simpul1;
for(;temp!=NULL; temp=temp->next_simpul) //cara looping
printf("%s, %f\n", temp->nama, temp->nilai);
//menghapus simpul budi
simpul1->next_simpul = simpul4; //update link
free(simpul2); //hapus simpul
printf("\n");
temp = simpul1;
for(;temp!=NULL; temp=temp->next_simpul) //cara looping
printf("%s, %f\n", temp->nama, temp->nilai);
}
8 Tips Praktis Pemrograman
Cukup banyak mahasiswa yang merasa kesulitan dalam belajar membuat program. Bingung harus memulai dari mana. Beberapa kejadian yang sering mengganggu dalam proses ini adalah masalah terjadinya error pada saat kompilasi atau eksekusi program. Hal ini terbukti berdasarkan survei yang saya lakukan di kelas dalam 2 semester terakhir.
Error itu hal biasa dalam belajar membuat program. Sebagaimana klo kita jatuh ato nabrak ketika belajar naik sepeda. Sudah hal lumrah klo salah dalam belajar. Namanya saja belajar. Dari yang sama sekali blank, menjadi skillful. Kita bukan malaikat lho. Yang nggak wajar itu adalah tidak mengambil pelajaran dari kesalahan yang ditemukan, ato yang lebih parah adalah mengulangi kembali kesalahan serupa. Error tidak seharusnya membuat semangat belajar kita padam, terhenti di tengah jalan.
Pembaca yang budiman, disini saya akan berbagi pengalaman belajar membuat program. Jujur, saya berangkat dari nol untuk belajar programming. Bahkan 2 tahun pertama kuliah, saya masih tanpa komputer pribadi. Cuma nebeng teman, ato mampir di lab. Nggak kenal itu bahasa Pascal, bahasa C maupun C++. Tapi karena saya sudah memilih kuliah di bidang IT, ya apa boleh buat. Demi masa depan, semua tantangan harus dihadapi. Salah satunya adalah ketrampilan membuat program.
Tips yang pertama adalah tumbuhkan cinta dulu (ceile...) kepada pemrograman. Tanpa ada cinta ya jangan harap bisa punya motivasi tinggi. Cinta bisa alami, bisa dikondisikan. Sebaiknya dua-duanya kita miliki. Klo alami prosesnya butuh banyak waktu karena "trisno jalaran soko kulino". Cinta karena kebiasaan. Namanya kebiasaan itu lama. Tiada hari tanpa coding :). Namun cinta bisa juga dikondisikan. Relatif cepat. Kita harus kondisikan mindset kita bahwa tanpa menguasai programming ya tamat sudah masa depan. Mo jadi apa nanti? Lulusan IT mo kerja apa klo programming saja nggak ngeh? Ato jangan-jangan malah ke-DO duluan? :(. So, cintai dulu membuat program. Bayangkan dengan kita cinta programming, maka kita kelak akan bisa membuat program sekelas Winning Eleven, Windows Vista ato Counter Strike! Keren kan :)
Kedua, miliki akses ke komputer. Nggak harus beli. Anda masih punya sahabat karib, teman baik (ini gunanya gaul di kampus, ikut organisasi). Anda pun masih bisa pinjam komputer di lab seijin pengurusnya ato bisa juga di ruang himpunan/ asisten. Tips ketiga, terkait dengan masalah komputer, adalah praktekkan programming. Membuat program bukan pekerjaan hayalan, ngelamun, ditulis di angan-angan kemudian dijalankan. Itu mbujuk, ngawur, nggak ada dalilnya. Menguasai pemrograman harus dari mencobanya. Bukan sekedar mendengarkan kuliah di kelas (kalo nggak tidur/ ngobrol sendiri), membaca dan mengingat-ingat catatan. Pemrograman bukan sekedar pemahaman tapi juga menuntut adanya ketrampilan. Dengan mencoba sendiri langsung di depan komputer akan semakin menguatkan interaksi kita dengan programming. Semakin merasakan bahwa membuat program itu sangat menarik. Bayangkan, kita bisa menyuruh-nyuruh komputer untuk mengerjakan apa yang kita inginkan lewat pemrograman!
Yang keempat, mulailah dengan contoh yang sederhana. Jangan overlap langsung ke contoh yang relatif tingkat kesulitannya tinggi. Cukup dengan 10 baris dulu, jangan langsung yang 50 baris. Bisa pusing nantinya. Dalam kurikulum programming, mulailah dengan mengenal jenis-jenis tipe data dan coba program jenis sekuensial sederhana dulu. Lanjutkan dengan mempelajari contoh branching ato looping. Semakin sulit lagi, gabungkan looping dan branching dalam satu program. Tak ketinggalan, pelajari juga tipe data terstruktur semisal array dan struct. Syaratnya: pastikan Anda punya cukup literatur yang berisikan banyak contoh source code program. Setelah anda memahami contoh program, silahkan modifikasi source code tersebut. Pelajari dan analisa dampak yang terjadi.
Kelima, jika menemukan error, jangan panik dulu. Teliti kembali source code yang telah ditulis. Apakah sudah sesuai dengan contoh? Semua kompiler bahasa pemrograman menyediakan fasilitas error report, biasanya di bagian bawah jendel program. Disitu tertera lokasi baris terjadinya error disertai dengan penjelasan sebabnya. Syaratnya ya dikit-dikit kita harus menguasai bahasa Inggris. Bila ternyata masih belum paham maksud error-nya maka ada beberapa kemungkinan solusi: 1. tanya teman baik anda yang paham programming. 2. konsultasi ke mbah Google. 3. bawa masalah tersebut ke kampus. 4. hubungi kantor polisi terdekat (just kidding) maksudnya tulis saja ke blog ini, mungkin saya bisa mbantu :)
Keenam, atur waktu, dan buat jadwal belajar jika perlu. Namanya belajar jelas butuh waktu untuk konsentrasi, fokus. Jam bermain, ato waktu untuk agenda-agenda yang kurang ato bahkan nggak jelas kontribusinya buat masa depan ya sudah sepantasnya dikurangi. Belajar butuh pengorbanan, keluar dari zona nyaman, dari nyantai-nyantai dan asyik berleha-leha. Slot waktu belajar harus jelas. Saya anjurkan bisa rutin tiap hari belajar satu program. Tanamkan: Ini demi masa depan! Ini investasi kita yang akan dipanen 4-5 tahun ke depan. InsyaAlloh.
Ketujuh, tularkan ilmu, sekecil apapun. Orang bijak mengatakan, "Ikatlah ilmu dengan mengamalkannya". Semakin sering kita berbagi ilmu, maka ilmu kita bukannya malah berkurang akan tetapi akan semakin menancap di pikiran, semakin ahli. Orang yang ahli adalah yang bisa memahamkan orang yang sebelumnya tidak paham. Ajari teman yang merasa kesulitan. Kirim artikel-artikel praktis lewat email/ milis. Posting di blog pribadi juga OK.
Tips yang kedelapan, berbakti kepada dan minta doa restu dari orang tua. Bagaimanapun beliau lah yang berkontribusi terhadap kuliah kita. Doa beliau sangat mustajab. Jangan sampai membuat beliau kecewa. Tunjukkan hasil belajar yang positif. Dan tak lupa mohon kepada-NYA supaya dibukakan pintu kemudahan dalam menimba ilmu. Karena milik-NYA-lah ilmu dari segala sumber ilmu. Wallohu a'lam bishowab. Semoga bermanfaat. Btw, ingat-ingat ada DELAPAN (8) tipsnya. Cukup DELAPAN saja... :D
Error itu hal biasa dalam belajar membuat program. Sebagaimana klo kita jatuh ato nabrak ketika belajar naik sepeda. Sudah hal lumrah klo salah dalam belajar. Namanya saja belajar. Dari yang sama sekali blank, menjadi skillful. Kita bukan malaikat lho. Yang nggak wajar itu adalah tidak mengambil pelajaran dari kesalahan yang ditemukan, ato yang lebih parah adalah mengulangi kembali kesalahan serupa. Error tidak seharusnya membuat semangat belajar kita padam, terhenti di tengah jalan.
Pembaca yang budiman, disini saya akan berbagi pengalaman belajar membuat program. Jujur, saya berangkat dari nol untuk belajar programming. Bahkan 2 tahun pertama kuliah, saya masih tanpa komputer pribadi. Cuma nebeng teman, ato mampir di lab. Nggak kenal itu bahasa Pascal, bahasa C maupun C++. Tapi karena saya sudah memilih kuliah di bidang IT, ya apa boleh buat. Demi masa depan, semua tantangan harus dihadapi. Salah satunya adalah ketrampilan membuat program.
Tips yang pertama adalah tumbuhkan cinta dulu (ceile...) kepada pemrograman. Tanpa ada cinta ya jangan harap bisa punya motivasi tinggi. Cinta bisa alami, bisa dikondisikan. Sebaiknya dua-duanya kita miliki. Klo alami prosesnya butuh banyak waktu karena "trisno jalaran soko kulino". Cinta karena kebiasaan. Namanya kebiasaan itu lama. Tiada hari tanpa coding :). Namun cinta bisa juga dikondisikan. Relatif cepat. Kita harus kondisikan mindset kita bahwa tanpa menguasai programming ya tamat sudah masa depan. Mo jadi apa nanti? Lulusan IT mo kerja apa klo programming saja nggak ngeh? Ato jangan-jangan malah ke-DO duluan? :(. So, cintai dulu membuat program. Bayangkan dengan kita cinta programming, maka kita kelak akan bisa membuat program sekelas Winning Eleven, Windows Vista ato Counter Strike! Keren kan :)
Kedua, miliki akses ke komputer. Nggak harus beli. Anda masih punya sahabat karib, teman baik (ini gunanya gaul di kampus, ikut organisasi). Anda pun masih bisa pinjam komputer di lab seijin pengurusnya ato bisa juga di ruang himpunan/ asisten. Tips ketiga, terkait dengan masalah komputer, adalah praktekkan programming. Membuat program bukan pekerjaan hayalan, ngelamun, ditulis di angan-angan kemudian dijalankan. Itu mbujuk, ngawur, nggak ada dalilnya. Menguasai pemrograman harus dari mencobanya. Bukan sekedar mendengarkan kuliah di kelas (kalo nggak tidur/ ngobrol sendiri), membaca dan mengingat-ingat catatan. Pemrograman bukan sekedar pemahaman tapi juga menuntut adanya ketrampilan. Dengan mencoba sendiri langsung di depan komputer akan semakin menguatkan interaksi kita dengan programming. Semakin merasakan bahwa membuat program itu sangat menarik. Bayangkan, kita bisa menyuruh-nyuruh komputer untuk mengerjakan apa yang kita inginkan lewat pemrograman!
Yang keempat, mulailah dengan contoh yang sederhana. Jangan overlap langsung ke contoh yang relatif tingkat kesulitannya tinggi. Cukup dengan 10 baris dulu, jangan langsung yang 50 baris. Bisa pusing nantinya. Dalam kurikulum programming, mulailah dengan mengenal jenis-jenis tipe data dan coba program jenis sekuensial sederhana dulu. Lanjutkan dengan mempelajari contoh branching ato looping. Semakin sulit lagi, gabungkan looping dan branching dalam satu program. Tak ketinggalan, pelajari juga tipe data terstruktur semisal array dan struct. Syaratnya: pastikan Anda punya cukup literatur yang berisikan banyak contoh source code program. Setelah anda memahami contoh program, silahkan modifikasi source code tersebut. Pelajari dan analisa dampak yang terjadi.
Kelima, jika menemukan error, jangan panik dulu. Teliti kembali source code yang telah ditulis. Apakah sudah sesuai dengan contoh? Semua kompiler bahasa pemrograman menyediakan fasilitas error report, biasanya di bagian bawah jendel program. Disitu tertera lokasi baris terjadinya error disertai dengan penjelasan sebabnya. Syaratnya ya dikit-dikit kita harus menguasai bahasa Inggris. Bila ternyata masih belum paham maksud error-nya maka ada beberapa kemungkinan solusi: 1. tanya teman baik anda yang paham programming. 2. konsultasi ke mbah Google. 3. bawa masalah tersebut ke kampus. 4. hubungi kantor polisi terdekat (just kidding) maksudnya tulis saja ke blog ini, mungkin saya bisa mbantu :)
Keenam, atur waktu, dan buat jadwal belajar jika perlu. Namanya belajar jelas butuh waktu untuk konsentrasi, fokus. Jam bermain, ato waktu untuk agenda-agenda yang kurang ato bahkan nggak jelas kontribusinya buat masa depan ya sudah sepantasnya dikurangi. Belajar butuh pengorbanan, keluar dari zona nyaman, dari nyantai-nyantai dan asyik berleha-leha. Slot waktu belajar harus jelas. Saya anjurkan bisa rutin tiap hari belajar satu program. Tanamkan: Ini demi masa depan! Ini investasi kita yang akan dipanen 4-5 tahun ke depan. InsyaAlloh.
Ketujuh, tularkan ilmu, sekecil apapun. Orang bijak mengatakan, "Ikatlah ilmu dengan mengamalkannya". Semakin sering kita berbagi ilmu, maka ilmu kita bukannya malah berkurang akan tetapi akan semakin menancap di pikiran, semakin ahli. Orang yang ahli adalah yang bisa memahamkan orang yang sebelumnya tidak paham. Ajari teman yang merasa kesulitan. Kirim artikel-artikel praktis lewat email/ milis. Posting di blog pribadi juga OK.
Tips yang kedelapan, berbakti kepada dan minta doa restu dari orang tua. Bagaimanapun beliau lah yang berkontribusi terhadap kuliah kita. Doa beliau sangat mustajab. Jangan sampai membuat beliau kecewa. Tunjukkan hasil belajar yang positif. Dan tak lupa mohon kepada-NYA supaya dibukakan pintu kemudahan dalam menimba ilmu. Karena milik-NYA-lah ilmu dari segala sumber ilmu. Wallohu a'lam bishowab. Semoga bermanfaat. Btw, ingat-ingat ada DELAPAN (8) tipsnya. Cukup DELAPAN saja... :D
Dasar Operasi String di C++
Tipe data string (nama lain array karakter) sangat sering dipakai dalam pembuatan program, khususnya yang berkaitan dengan pengolahan data berupa kata-kata (kumpulan huruf alpha numerik). Semua bahasa pemrograman mendukung penggunaan konsep string, bahkan untuk bahasa pemrograman generasi terbaru (semisal java, delphi, VB) telah memiliki tipe data string sendiri, bukan lagi memakai array karakter. Lebih dari itu dalam konsep OOP, class string sudah dilengkapi dengan fungsi-fungsi standar yang komplit.
Dalam artikel ini saya akan membahas satu bagian kecil saja tentang string dalam bahasa C++. Kunci utama mengolah tipe data string adalah dengan memahami aturan bahwa karakter terakhir (ujung belakang) sebuah data string SELALU berisi karakter NULL (''). Aturan ini perlu kita camkan ketika akan membuat fungsi-fungsi manipulasi data string, antara lain: menghitung panjang string, menggabungkan dua buah string, mengkopi isi string, mencari data ke dalam string, memotong bagian dalam sebuah string, dst.
Contoh yang akan saya tunjukkan disini adalah program untuk menghitung panjang sebuah string. Perlu Anda ketahui bahwa sebenarnya fungsi-fungsi baku manipulasi string sebenarnya sudah difasilitasi oleh bahasa C++ dengan memakai library string.h, programmer tinggal memanggil fungsinya. Namun tujuan saya membuat contoh ini adalah lebih untuk menguatkan ketrampilan dalam coding bukan sekedar menggunakan.
Dalam library string.h sudah terdapat fungsi length() untuk mengetahui panjang sebuah string. Disini kita akan belajar membuat program yang tujuannya sama denga fungsi length() tersebut. Perhatikan source code berikut:
#include "stdio.h"
void main()
{
char namaku[30];
printf("Ketikkan Nama = "); gets(namaku);
printf("Panjang Nama Anda = ");
for(int i=0; namaku[i] != ''; i++); //loop sampai ketemu NULL
printf("%d karakter", i); //i berisi info panjang string
}
Penjelasan:
Teknik menghitung panjang string di atas adalah dengan membaca satu demi satu isi array karakternya. Selama karakter yang dibaca bukanlah karakter NULL maka i akan terus bertambah satu. Dengan demikian i-lah yang menampung info tentang jumlah karakter di dalam string. Berani mencoba? Selamat Belajar! :D
Dalam artikel ini saya akan membahas satu bagian kecil saja tentang string dalam bahasa C++. Kunci utama mengolah tipe data string adalah dengan memahami aturan bahwa karakter terakhir (ujung belakang) sebuah data string SELALU berisi karakter NULL (''). Aturan ini perlu kita camkan ketika akan membuat fungsi-fungsi manipulasi data string, antara lain: menghitung panjang string, menggabungkan dua buah string, mengkopi isi string, mencari data ke dalam string, memotong bagian dalam sebuah string, dst.
Contoh yang akan saya tunjukkan disini adalah program untuk menghitung panjang sebuah string. Perlu Anda ketahui bahwa sebenarnya fungsi-fungsi baku manipulasi string sebenarnya sudah difasilitasi oleh bahasa C++ dengan memakai library string.h, programmer tinggal memanggil fungsinya. Namun tujuan saya membuat contoh ini adalah lebih untuk menguatkan ketrampilan dalam coding bukan sekedar menggunakan.
Dalam library string.h sudah terdapat fungsi length() untuk mengetahui panjang sebuah string. Disini kita akan belajar membuat program yang tujuannya sama denga fungsi length() tersebut. Perhatikan source code berikut:
#include "stdio.h"
void main()
{
char namaku[30];
printf("Ketikkan Nama = "); gets(namaku);
printf("Panjang Nama Anda = ");
for(int i=0; namaku[i] != ''; i++); //loop sampai ketemu NULL
printf("%d karakter", i); //i berisi info panjang string
}
Penjelasan:
Teknik menghitung panjang string di atas adalah dengan membaca satu demi satu isi array karakternya. Selama karakter yang dibaca bukanlah karakter NULL maka i akan terus bertambah satu. Dengan demikian i-lah yang menampung info tentang jumlah karakter di dalam string. Berani mencoba? Selamat Belajar! :D
Mengenal Pointer di C++
Tipe data pointer merupakan salah satu fitur yang diberikan oleh bahasa C, sebagaimana bahasa Pascal juga mendukungnya. Berbeda dengan jenis tipe data umumnya, tipe data pointer berfungsi untuk menyimpan alamat memori sebuah data melalui variabelnya. Jadi isi sebuah variabel bertipe pointer adalah alamat, bukan nilai data. Sebagai contoh sederhana kita punya variabel pointer integer bernama px (cirinya diawali dengan simbol bintang):
int x, *px;
x = 10;
px = &x;
Pada contoh di atas, perintah x = 10 berarti mengisikan data 10 di lokasi memori milik x. Sedangkan perintah px = &x berarti mengisikan alamat variabel x ke dalam px. Jadi di dalam px berisi alamat memori (kode heksadesimal) sedangkan di dalam x berisi datanya. Lebih jelasnya kita lihat contoh berikut ini:
#include "stdio.h"
void main()
{
int *pi, *pj, k;
int data [] = {10, 20, 30}; //array integer dengan 3 elemen
pi = &data[1]; //pi menunjuk alamat data 20
pj = &data[0]; //pj menunjuk alamat data 10
k = 100;
k = k + *pi + *pj; //100 + 20 + 10 = 130
k = k + *pi; //130 + 20 = 150
k = k - *pj; //150 - 10 = 140
k++; //140 + 1 = 141
k = k + *(pj + 1); //141 + 20 = 161
for(int i=0; i<=5; i++) //menampilkan isi memori di sekitar pj
{
printf("Isi pj = %d di alamat %p\n", *(pj+i), (pj+i));
}
k = k - *(pi - 1); //161 - 10 = 151
printf("K = %d\n", k);
}
Silahkan dicoba di rumah. Any question? Selamat belajar :)
int x, *px;
x = 10;
px = &x;
Pada contoh di atas, perintah x = 10 berarti mengisikan data 10 di lokasi memori milik x. Sedangkan perintah px = &x berarti mengisikan alamat variabel x ke dalam px. Jadi di dalam px berisi alamat memori (kode heksadesimal) sedangkan di dalam x berisi datanya. Lebih jelasnya kita lihat contoh berikut ini:
#include "stdio.h"
void main()
{
int *pi, *pj, k;
int data [] = {10, 20, 30}; //array integer dengan 3 elemen
pi = &data[1]; //pi menunjuk alamat data 20
pj = &data[0]; //pj menunjuk alamat data 10
k = 100;
k = k + *pi + *pj; //100 + 20 + 10 = 130
k = k + *pi; //130 + 20 = 150
k = k - *pj; //150 - 10 = 140
k++; //140 + 1 = 141
k = k + *(pj + 1); //141 + 20 = 161
for(int i=0; i<=5; i++) //menampilkan isi memori di sekitar pj
{
printf("Isi pj = %d di alamat %p\n", *(pj+i), (pj+i));
}
k = k - *(pi - 1); //161 - 10 = 151
printf("K = %d\n", k);
}
Silahkan dicoba di rumah. Any question? Selamat belajar :)
Subscribe to:
Posts (Atom)