Tolong pilih kategori sesuai, jenis posting (diskusi atau bukan) dan sertakan tag/topik yang sesuai seperti komputer, java, php, mysql, dll. Promosi atau posting tidak pada tempatnya akan kami hapus!
- Bagi Anda yang ingin mendaftar, baca link berikut:
http://diskusiweb.com/discussion/50491/how-to-registrasi-diskusiweb-com-baca-ini-terlebih-dahulu
- Cara menyisipkan kode program supaya tampil rapi dan terformat dengan baik di diskusiweb.com: http://www.diskusiweb.com/discussion/50415/cara-menyisipkan-kode-program-di-diskusiweb-com
- Cara posting gambar/image di post Anda: http://www.diskusiweb.com/discussion/47345/cara-menyisipkan-menyertakan-image-pada-posting/p1

tanya pointer

#include<stdio.h>

int main(){
    int jml_elemen;
    int sum=0, max=0, min=0;
   
    printf("Banyaknya elemen yang akan diinput : ");
    scanf("%d",&jml_elemen);
   
    //bikin array dengan panjang jml_elemen
    int data[jml_elemen];
   
    for(int i=0;i<jml_elemen;i++){
        printf("\nInput elemen ke %d : ",i+1);
        scanf("%d",&data[i]);
    }
   
    //pke array
    printf("\nPake Array :");
    printf("\n\nData yang Anda masukan \n");
    max = min = data[0];
    for(int i=0;i<jml_elemen;i++){
        printf("%d ",data[i]);
        sum = sum + data[i];
        if(max<data[i]){
            max=data[i];
        }
        if(min>data[i]){
            min=data[i];
        }
    }
    printf("\n\nJumlah data : %d",sum);
    printf("\n\nRata-rata : %d",sum/2);
    printf("\n\nTerkecil : %d",min);
    printf("\n\nTerbesar : %d",max);
    printf("\n");
   
    //pake pointer
    sum = 0;
    int *ptr;
    ptr = data;
    printf("\nPake Pointer : ");
    printf("\n\nData yang Anda masukan adalah \n");
    max = min = *ptr;
    for(int i=0;i<jml_elemen;i++){
        printf("%d ",*(ptr + i));
        sum = sum + *(ptr + i);
        if (max < *(ptr + i)) {
            max = *(ptr + i);
        }
        if (min > *(ptr + i)) {
            min = *(ptr + i);
        }
    }
    printf("\n\nJumlah data : %d",sum);
    printf("\n\nRata-rata : %d",sum/2);
    printf("\n\nTerkecil : %d",min);
    printf("\n\nTerbesar : %d",max);
    printf("\n");
   
    return 0;
}

aku kesulitan memahami yg bagian pointer
aku kesulitan membacanya
mohon bantuannya
:D
Tagged:

Comments

  • kesulitan yg kaya apa ?

    pointer pan menunjuk ke alamat memori dari suatu variabel tertentu
  • aku bingung bacanya
    int *ptr; ?
    ptr = data; ?
    max = min = *ptr; ?
    ptr + i?

    misal nilai yg di input : 3 5 2 7 1

    itu bacanya gimana?
    agak blank


    :D
  • edited February 2015
    mulai dari integer dulu yo
    integer itu kalo di c ukurannya 2 bytes

    int *ptr

    itu mendefinisikan bahwa variable ptr adalah pointer of integer
    yg bisa dipake utk menunjuk alamat memori tertentu
    dan yg dibaca / disimpan pada alamat memori tersebut adalah data integer

    ptr = data

    data pan array of integer
    tetep aja elemen nya integer
    ptr di isi dgn alamat awal dari variabel data
    equal dgn alamat data[0]

    max = min = *ptr

    kalo ptr itu alamatnya
    kalo *ptr itu value yg ditunjuk alamat tersebut
    ya sama aja max = min = data[0]
    lha wong ptr sudah menunjuk ke alamat data[0]

    ptr+i

    itu dari alamat yg semula, ditambah i (suatu value)
    karena ptr elo itu pointer of integer yg size nya 2 bytes
    di + i itu artinya digeser i * 2 bytes

    kalo digambar kira-kira kaya begini :

    integer size = 2 bytes
    alamat memori | value
    0x00000000 | 3
    0x00000002 | 5
    0x00000004 | 2
    0x00000006 | 7
    0x00000008 | 1

    misal data[0] tersimpan di alamat 0x00000000
    ptr juga bakal menunjuk ke alamat 0x00000000
    data[0] isinya 3
    *ptr itu value berukuran integer yg tersimpan di alamat 0x00000000 = 3

    ptr + 1
    itu menunjuk ke alamat 0x00000000 + (1 * 2 bytes)
    jadi kalo *(ptr + 1) itu value integer yg ada di alamat 0x00000002 = 5

  • makasih master
    aku udah paham
    :-bd
Sign In or Register to comment.