Variable auto, static, extern, register


Berikut contoh dari tulisan sebelumnya Variable Pemrograman C (2) :

variable auto (ex10.c):

#include <stdio.h>
#include <math.h> //untuk menggunakan fungsi pow()
main()
{
    int a = 5,b;
    printf(“Masukkan nilai pangkat : “);scanf(“%d”,&b);
    if (b >= 0){
        auto int hasil;
        hasil = pow(a,b);
        printf(“%d^%d = %d\n”,a,b,hasil);
    }
}

Lakukan kompilasi dan jalankan program diatas dengan perintah di bawah ini :

gcc -o ex10 ex10.c -lm

./ex10

ada tambahan opsi -lm, karena ada header <math.h>. Beikut kurang lebih screenshot program di atas:

coba ubah kode di atas sperti berikut ini:

#include <stdio.h>
#include <math.h> //untuk menggunakan fungsi pow()
main()
{
    int a = 5,b;
    printf(“Masukkan nilai pangkat : “);scanf(“%d”,&b);
    if (b >= 0){
        auto int hasil;
        hasil = pow(a,b);
        printf(“%d^%d = %d\n”,a,b,hasil);
    }
    printf(“%d^%d = %d\n”,a,b,hasil);
}

Kemudian lakukan kompilasi, maka akan terjadi error kurang lebih seperti berikut :

ex10.c: In function ‘main’:
ex10.c:12:28: error: ‘hasil’ undeclared (first use in this function)
ex10.c:12:28: note: each undeclared identifier is reported only once

Kenapa? Karena variable hasil tidak dikenali.

Variable Statis (ex12.c):

#include <stdio.h>
int kali10(){
    static int a = 1;
    a *= 10;
    return a;
}
int main(){
    int x,y,z;
    x = kali10();
    y = kali10();
    z = kali10();
    printf(“%d\n”,x);
    printf(“%d\n”,y);
    printf(“%d\n”,z);
    return 0;
}

Lakukan kompilasi dan jalankan kode di atas:

gcc -o ex12 ex12.c

./ex12

Kurang lebih akan seperti gambar berikut ini:

coba hilangkan kata kunci static kemudian lakukan kompilasi ulang dan jalankan lagi program, maka hasilnya akan terlihat seperti pada gambar di bawah ini:

Variable Eksternal:

main.c :

#include <stdio.h>
#include <stdlib.h>
int main(){
    extern int my_var;
    my_var = 500;
    print_value();
    exit(0);
}

secondary.c:

#include <stdio.h>
int my_var;
void print_value()
{
    printf(“my_var = %d\n”, my_var);
}

Lakukan kompilasi pada kedua program di atas dan jalankan program:

gcc -o contoh1 main.c secondary.c

./contoh1

Maka hasilnya akan terlihat sperti pada gambar di bawah ini:

Variable Register (ex14.c ):

#include <stdio.h>
int pangkat(register int a, register int b){
    register int hasil;
    hasil = 1;
    for (;b;b–){
        hasil *=a;
    }
    return hasil;
}
main(){
    printf(“2^6 = %d\n”,pangkat(2,6));
    return 0;
}

Lakukan kompilasi dan jalankan program:

gcc -o ex14 ex14.c
./ex14

Berikut hasilnya:

Iklan
  1. Juli 4th, 2012

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: