Pointer , Belajar C++ Part IV
undefined
Pointer dalam bahasa Indonesia berarti penunjuk. Pointer merupakan variabel yang menangani alamat variabel lain. Hal ini menyebabkan bahwa pointer tidak berhubungan langsung dengan data yang aktual, melainkan dengan cara tidak langsung. Jadi, varibel
pointer hanya berisi alamat memory dari variabel lain yang memiliki nilai data tertentu saja.
example:
int data = 10;
int*ptr,hasil; //ptr dideklarasikan sebagai pointer
ptr=&data; //ptr mengambil alamat variabel data
hasil=*ptr;//hasil mengambil data dari alamat variabel ptr.
Tanda & berfungsi untuk mengetahui alamat memory dari variabel tertentu.
Catatan:
Jika ditampilkan isinya ptr, akan menghasilkan alamat memory dari variabel data, atau dengan cara lain untuk menampilkan alamat dari variabel data yaitu dengan &data.
Jika ditampikan isinya *ptr, akan menghasilkan nilai dari variabel data, atau dengan cara lain jika ditampilkan isi dari *(&data) akan menghasilkan isi dari variabel data, yaitu 10.
Beberapa hal tentang pointer
Operasi variabel pointer dapat dikerjakan oleh variabel pointer yang lain.
example:
X = 10;
Ptr1 = &X;
Ptr2 = Ptr1;
Ptr1 dan Ptr2 menghasilkan alamat variabel X yang sama.
Operasi pointer dapat diterapkan pada tipe data array
Pointer dapat digunakan untuk mengakses elemen array
Pointer dapat menunjuk alamat pointer lain.
example:
int X = 11;
int *Ptr1, **Ptr2;
Ptr1 = &X;
Ptr2 = &Ptr1;
Jika ditampilkan isi Ptr1 dan Ptr2 akan menghasilkan nilai 11.
Ptr2 Ptr1 X
Pointer sebagai parameter
Dalam menjalankan tugas sebagai parameter fungsi, pointer dapat mengembalikan nilai dari parameter yang disertakan.
PROGRAM PERCOBAAN
// Contoh 1
#include <stdio.h>
void ubah(int *x,int*y);
void main()
{
int a=5;
int b=6;
printf("Semula a = %d b = %d\n",a,b);
ubah(&a,&b);
printf("Kini a = %d b = %d\n",a,b);
}
void ubah(int *x,int *y)
{
*x = *x * *x;
*y = *y + 60;
}
//Contoh 2
#include <stdio.h>
#include <conio.h>
void main()
{
long int *A,*B,*C;
clrscr();
printf("Isikan nilai A: ");scanf("%d",A);
*B = 10;
*C = *A * *B;
printf("Alamat variabel A = %p \n",&A);
printf("Alamat variabel B = %p \n",&B);
printf("Alamat variabel C = %p \n",&C);
printf("Nilai C adalah :%6d \n",*C);
getch();
}
//Contoh 3
#include <stdio.h>
#include <conio.h>
void main()
{
int X[] = {10,20,50},*baca,i,sum=0;
clrscr();
baca = &X[0];
for(i=0;i<3;i++)
{
sum = sum + *(baca+i);
printf("Nilai X[%d] = %d \n",i+1,*baca+i);
}
printf("Nilai Penjumlahan X = %d \n",sum);
getch();
}
//Contoh 4
#include <stdio.h>
#include <conio.h>
void main()
{
int *X,N=0,i=0,sum=0,data=0;
clrscr();
do{
*(X+N) = data;
printf("isikan data %d: ",N+1);scanf("%d",&data);
N++;
} while (data != 0);
printf("\n\n");
for(i=1;i<N-1;i++)
{
sum = sum + *(X+i);
printf("Nilai X[%d] = %d \n",i,*(X+i));
}
printf("Nilai Penjumlahan X = %d \n",sum);
getch();
}
Sumber : mti.ugm.ac.id
1 comments