Built-In Functions Untuk Manipulasi String Pada Bahasa C

Built-In Functions Untuk Manipulasi String Pada Bahasa C


Untuk manipulasi string, C telah menyediakan beberapa fungsi standar yang ada pada string.h. Beberapa yang akan dibahas kali ini adalah :

  • Fungsi strcpy()
  • Fungsi strlen()
  • Fungsi strrev()
  • Fungsi strcmp()
  • Fungsi strcmpi()

Fungsi strcpy()

Bentuk pemakaian :
#include <string.h>
strcpy(tujuan, asal);
Fungsi ini dipakai untuk mengcopy string asal ke variabel string tujuan termasuk karakter '\0'. Dalam hal ini, variabel tujuan haruslah mempunyai ukuran yang dapat digunakan untuk menampung seluruh karakter dari string asal. Contoh pada program :
#include <stdio.h>
#include <string.h>
#define MAKS 80

main() {
    char str1[MAKS];
    char str2[]="ABCDE";

    strcpy(str1, str2); //menyalin isi str2 ke str1

    printf("String pertama adalah : %s\n", str1);
    printf("String kedua adalah : %s\n", str2);
}
Built-In Functions Untuk Manipulasi String Pada Bahasa C
Output strcpy()

Fungsi strlen()

Bentuk pemakaian :
#include <string.h>
strlen(var_string);
Fungsi ini digunakan untuk memperoleh banyaknya karakter di dalam string yang menjadi argumennya (var_string). Keluaran dari fungsi ini adalah panjang dari var_string (karakter NULL tidak ikut dihitung). Contoh pada program :
#include <stdio.h>
#include <string.h>

main() {
    char salam[] = "Halo";

    printf("Panjang string %s = %d karakter\n", salam, strlen(salam));
}
Built-In Functions Untuk Manipulasi String Pada Bahasa C
Output strlen()

Fungsi strrev()

Bentuk pemakaian :
#include <string.h>
strrev(var_string);
Fungsi ini digunakan untuk membalik string yang menjadi argumennya (var_string). Contoh pada program :
#include <stdio.h>
#include <string.h>

main() {
    char balik[] = "kasur";
 
    printf("string %s dibalik menjadi ", balik);
    printf("%s\n", strrev(balik));
}
Built-In Functions Untuk Manipulasi String Pada Bahasa C
Output strrev()

Fungsi strcmp()

Membandingkan dua nilai string juga tidak dapat digunakan dengan operator hubungan, karena operator tersebut tidak untuk operasi string. Membandingkan dua buah nilai string secara case sensitive dapat dilakukan dengan fungsi strcmp(). Bentuk pemakaian :
#include <string.h>
strcmp(str1, str2);
Fungsi ini dipakai untuk membandingkan string str1 dengan string str2. Keluaran dari fungsi ini bertipe int yang berupa nilai :
  • -1, jika str1 kurang dari str2
  • 0, jika str1 sama dengan str2
  • 1, jika str1 lebih dari str2
Pembandingan dilakukan untuk karakter pada posisi yang sama dari str1 dan str2, dimulai dari karakter terkiri yang didasarkan oleh nilai ASCIInya. Misal, karakter ‘A’lebih kecil daripada ‘B’ dan karakter ‘B lebih kecil daripada ‘C’. Contoh pada program :
#include <stdio.h>
#include <string.h>

main() {
    char str1[]="HALO";
    char str2[]="Halo";
    char str3[]="HALO";

    printf("Hasil pembandingan %s dengan %s > %d\n", str1, str2, strcmp(str1, str2));
    printf("Hasil pembandingan %s dengan %s > %d\n", str2, str1, strcmp(str2, str1));
    printf("Hasil pembandingan %s dengan %s > %d\n", str1, str3, strcmp(str1, str3));
}
Built-In Functions Untuk Manipulasi String Pada Bahasa C
Output strcmp()

Fungsi strcmpi()

Membandingkan dua buah nilai string secara non case sensitive dapat dilakukan dengan fungsi strcmpi(). Bentuk pemakaian :
#include <string.h>
strcmpi(str1, str2);
Fungsi ini dipakai untuk membandingkan string str1 dengan string str2. Keluaran dari fungsi ini bertipe int yang berupa nilai :
  • 1, jika str1 kurang dari str2
  • 0, jika str1 sama dengan str2
  • 1, jika str1 lebih dari str2
#include <stdio.h>
#include <string.h>

main() {
    char str1[]="HALO";
    char str2[]="harimau";
    char str3[]="halo";

    printf("Hasil pembandingan %s dengan %s --> %d\n", str1, str2, strcmpi(str1, str2));
    printf("Hasil pembandingan %s dengan %s --> %d\n", str2, str1, strcmpi(str2, str1));
    printf("Hasil pembandingan %s dengan %s --> %d\n", str1, str3, strcmpi(str1, str3));
}
Built-In Functions Untuk Manipulasi String Pada Bahasa C
Output strcmpi()





Sekian artikel tentang Built-In Functions Untuk Manipulasi String Pada Bahasa C. Jika ada yang kurang mengerti bisa ditanyakan di kolom komentar. Semoga bermanfaat:)

String Dalam Bahasa C

String Dalam Bahasa C


Apa itu String? String merupakan bentuk data yang biasa dipakai dalam bahasa pemrograman untuk keperluan menampung dan memanipulasi data teks, misalnya untuk menampung (menyimpan) suatu kalimat.

Pada bahasa C, string bukanlah merupakan tipe data tersendiri, melainkan hanyalah kumpulan dari nilai-nilai karakter yang berurutan dalam bentuk array berdimensi satu array of char.


Konstanta String

Suatu konstanta string ditulis dengan diawali dan diakhiri tanda petik ganda, misalnya:
     “ABCDE”

Nilai string ini disimpan dalam memori secara berurutan dengan komposisi sebagai berikut:
String Dalam Bahasa C
String Disimpan Dalam Memori Secara Berurutan
Setiap karakter akan menempati memori sebesar 1 byte. Byte terakhir otomatis akan berisi karakter NULL (\0), dengan demikian maka akhir dari nilai suatu string akan dapat dideteksi.

Sebagai sebuah array of char, karakter pertama dari nilai string mempunyai indeks ke-0, karakter kedua mempunyai indeks ke-1, dan seterusnya.


Variabel String

Variabel string adalah variabel yang dipakai utuk menyimpan nilai string. Misalnya :
char name[15];
merupakan instruksi untuk mendeklarasikan variabel string dengan panjang maksimal 15 karakter (termasuk karakter NULL). Deklarasi tersebut sebenarnya tidak lain merupakan deklarasi array bertipe char.


Inisialisasi String

Suatu variabel string dapat diinisialisasi seperti halnya array yang lain (dalam kurung kurawal dipisahkan koma). Namun tentu saja elemen terakhirnya haruslah berupa karakter NULL. Sebagai contoh :
char name[] = {'R','I','N', 'I',’\0’};
Yang menyatakan bahwa name adalah variabel string dengan nilai awal berupa string : “RINI”.
Bentuk inisialisasi yang lebih singkat :
char name[] = “RINI”;
pada bentuk ini, karakter NULL tidak perlu ditulis. Secara implisit akan disisipkan oleh kompiler.


Input Output Data String

Untuk memasukkan atau menampilkan data String digunakan bisa beberapa fungsi standar yang ada di stdio.h.

Untuk operasi input :
– scanf()
– gets()
– fgets()

Untuk operasi output :
– puts()
– printf()


Memasukkan Data String

Pemasukan data string ke dalam suatu variabel biasa dilakukan dengan fungsi gets() atau scanf(). Bentuk umum pemakaiannya adalah sebagai berikut :
#include <stdio.h>
gets(nama_array);
atau
#include <stdio.h>
scanf(“%s”, nama_array);
Perhatikan :

  • nama_array adalah variabel bertipe array of char yang akan digunakan untuk menyimpan string masukan.
  • Di depan nama_array tidak perlu ada operator & (operator alamat), karena nama_array tanpa kurung siku sudah menyatakan alamat yang ditempati oleh elemen pertama dari array tersebut.
  • Kalau memakai scanf(), data string masukan tidak boleh mengandung spasi.
main(){
    char name[15];
    printf("Masukkan nama Anda : ");
    gets(name);
    printf("\nHalo, %s. Selamat belajar string.\n", name);
}
String Dalam Bahasa C
Pengalokasian String

Perlu diketahui, fungsi gets() akan membaca seluruh karakter yang diketik melalui keyboard sampai tombol ENTER ditekan dengan tanpa mengecek batasan panjang array yang merupakan argumennya.

Jika string yang dimasukkan melebihi ukuran array, maka sisa string (panjang string masukan dikurangi ukuran array plus karakter NULL) akan ditempatkan di lokasi sesudah bagian akhir dari array tersebut.

Tentu saja kejadian seperti ini bisa menimbulkan hal yang tidak diinginkan, misalnya berubahnya isi variabel yang dideklarasikan sesudah array tersebut karena tertumpuki oleh string yang dimasukkan (overwrite), atau perilaku program yang sama sekali berbeda dengan kemauan user yang dalam hal ini pelacakan kesalahannya (debugging) sangat sulit dilakukan, atau bahkan terjadi penghentian program secara tidak normal.
Untuk mengatasi hal itu, disarankan untuk menggunakan fungsi fgets() untuk menggantikan fungsi gets() dalam memasukkan data string. Bentuk umum pemakaian fgets() adalah :
#include <stdio.h>
fgets(nama_array, sizeof nama_array, stdin);

Uji Coba Dengan gets()

#include <stdio.h>
#define MAKS 5

main(){
    char kar = 'A';
    char nama[MAKS];

    printf("Karakternya = %c\n", kar);
    printf("Masukkan nama Anda : ");
    gets(nama);
    printf("\nNama Anda = %s\n", nama);
    printf("Karakternya = %c\n", kar);
}
String Dalam Bahasa C
Output

Menampilkan Data String

Untuk menampilkan isi variabel string, fungsi yang digunakan adalah puts() atau printf().

Bentuk umum pemakaiannya adalah sebagai berikut :
#include <stdio.h>
puts(var_string);
atau
printf("%s",var_string);
Dalam hal ini var_string adalah sebuah variabel yang berupa sebuah array of char.
Fungsi puts() akan menampilkan isi dari var_string dan secara otomatis menambahkan karakter '\n' di akhir string.

Sedangkan fungsi printf() akan menampilkan isi variabel string tanpa memberikan tambahan '\n'. Sehingga, agar kedua pernyataan di atas memberikan keluaran yang sama, maka pada pernyataan printf() dirubah menjadi :
printf("%s\n", var_string);


Mengakses Elemen String

Variabel string merupakan bentuk khusus dari array bertipe char. Oleh karena itu, elemen dari variabel string dapat diakses seperti halnya pengaksesan elemen pada array.

Perhitungan jumlah karakter dari string teks dapat dilakukan dengan memeriksa elemen dari string dimulai dari posisi yang pertama (indeks ke-0) sampai ditemukannya karakter NULL.

Program berikut menunjukkan cara mengakses elemen array untuk menghitung total karakter dari string yang dimasukkan melalui keyboard.
#include <stdio.h>
#define MAKS 256

main() {
    int i, jumkar = 0;
    char teks[MAKS];

    puts("Masukkan suatu kalimat (maks 255 karakter).");
    puts("Saya akan menghitung jumlah karakternya.\n");
    fgets(teks, sizeof teks, stdin);

    for(i=0; teks[i]!='\0'; i++){
        jumkar++;
    }
 
    printf("\nJumlah karakter = %d\n", jumkar);
}
Output





Demikian artikel tentang String Dalam Bahasa C. Semoga bermanfaat :)

Array Sebagai Parameter Fungsi Pada Bahasa C

Array Sebagai Parameter Fungsi Pada Bahasa C

Ketika diinginkan hasil proses di dalam fungsi terbaca di tempat fungsi tersebut dipanggil, maka gunakan salah satu mekanisme sebagai berikut :
  1. Return value, maks nilai yang dilaporkan = SATU
  2. Pass by reference, nilai yg dilaporkan lebih dari 1, bisa berbeda tipe datanya
  3. Menjadikan array sebagai parameter, jika hasil prosesnya banyak dan semua tipenya sama
  4. Jadikan array sebagai parameter aktual (tanpa kurung siku) & array sebagai parameter formalnya (tanpa size)
  5. Antara parameter aktual dengan parameter formal sebenarnya merupakan variabel yang berada pada lokasi/address yang SAMA, namun berbeda namanya (ALIAS)
  6. Perubahan apapun pada parameter formal, pasti akan berpengaruh pada parameter aktual
Contoh pada program :
#include <stdio.h>
#define MAKS 20
void pemasukan_data(float []);
void pengurutan_data(float []);
void penampilan_data(float []);
int jml;

main(){
    float data[MAKS];
    pemasukan_data(data); //tanpa kurung siku
    pengurutan_data(data); //tanpa kurung siku
    penampilan_data(data); //tanpa kurung siku
}

void pemasukan_data(float x[]) { //tanpa size
    int i;
    printf("Jumlah data = ");
    scanf("%d", &jml);
    for(i=0; i<jml; i++) {
        printf("Data ke%d : ", i+1);
        scanf("%f", &x[i]);
    }
}

void pengurutan_data(float x[]) { //tanpa size
    int i, j;
    float smtr;
    for(i=0; i<jml-1; i++) {
        for(j=i+1; j<jml; j++) {
            if(x[i] > x[j]) {
            smtr = x[i];
            x[i] = x[j];
            x[j] = smtr;
            }
        }
    }
}

void penampilan_data(float x[]) { //tanpa size
    int i;
    printf("\nData setelah diurutkan :\n\n");
    for (i=0; i<jml; i++) {
        printf("Data ke%d : %g\n", i+1, x[i]);
    }
}
Array Sebagai Parameter Fungsi Pada Bahasa C
Output Program
Penjelasan:

Program diatas digunakan untuk mengurutkan data yang dimasukkan oleh user. User dapat memasukkan jumlah data yang diinginkan (maksimal 20). Program dibagi menjadi 4 fungsi, fungsi main, fungsi pemasukan data, fungsi pengurutan data, dan fungsi penampilan data.

Pada baris ke 10, 11 dan 12, terdapat pemanggilan fungsi yang terdapat array sebagai parameter aktual (tanpa kurung siku). Serta ketiga fungsi buatan (fungsi pemasukan data, fungsi pengurutan data, dan fungsi penampilan data) terdapat array sebagai parameter formalnya (tanpa size).





Demikian artikel tentang Array Sebagai Parameter Fungsi Pada Bahasa C. Semoga bermanfaat :)

Array Dalam Bahasa C

Array Dalam Bahasa C

Array adalah sekumpulan data semua tipe datanya harus sama, menggunakan nama variabel yang sama dan dibedakan menurut indeksnya.

Secara default indeks array dimulai dari 0 s/d (n-1) dengan n adalah jumlah elemen dalam array.

Array bisa berupa array berdimensi satu, dua, tiga atau lebih. Array berdimensi satu (one dimensional array) mewakili bentuk suatu vektor. Array berdimensi dua (two dimensional array) mewakili bentuk dari suatu matriks atau tabel. Array berdimensi tiga (three dimensional array) mewakili bentuk suatu ruang.


Mendeklarasikan Array

Suatu array berdimensi satu dideklarasikan dalam bentuk umum berupa :

    tipe_data nama_var[ukuran];

dengan :
- tipe_data : untuk menyatakan tipe dari elemen array, misalnya int, char, float.
- nama_var : nama variabel array
- ukuran : untuk menyatakan jumlah maksimal elemen array.

Contoh pendeklarasian array :
float nilai[5];
menyatakan bahwa variabel nilai bertipe array of float dan memiliki 5 elemen bertipe float.


Mengakses Elemen Array

Pada C, data array akan disimpan dalam memori yang berurutan. Elemen pertama mempunyai indeks bernilai 0. Jika nilai dideklarasikan sebagai array of float dengan 5 elemen, maka elemen pertama memiliki indeks sama dengan 0, dan elemen terakhir memiliki indeks 4. Untuk lebih jelasnya, perhatikan gambar dibawah ini.
Array Dalam Bahasa C
Pengaksesan Elemen Array

Contoh program :
#include <stdio.h>
#define MAKS 5

main() {
    int i;
    float total=0, rata, nilai[MAKS];
    for(i=0; i<MAKS; i++) {
        printf("Nilai ke %d : ", i+1);
        scanf("%f", &nilai[i]);
        total = total + nilai[i]; //hitung jml total nilai
    }
    rata = total / MAKS; //hitung nilai rata-rata
    printf("\nNilai ratarata = %g\n", rata); //cetak nilai rata-rata
}
Array Dalam Bahasa C
Output Program
Penjelasan : Program diatas menerima inputan dari user berupa 5 bilangan yang akan dimasukkan ke variabel array nilai[]. Panjang array didefinisikan konstanta MAKS yang bernilai 5. Lalu dimasukkan ke variabel total. Program menggunakan perulangan for untuk mengulang perintah sebanyak 5 kali. Setelah selesai, program menampilkan nilai rata-rata.


Inisialisasi Array

Sebuah array dapat diinisialisasi sekaligus pada saat dideklarasikan. Untuk mendeklarasikan array, nilai yang diinisialisasikan dituliskan di antara kurung kurawal ({}) yang dipisahkan dengan koma.
#include <stdio.h>
main() {

    int bln, thn, jhari; //inisialisasi variabel

    //inisialisasi array
    int jum_hari[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    //input output
    puts("MEMPEROLEH JUMLAH HARI");
    puts("PADA SUATU BULAN DAN SUATU TAHUN");
    puts("");
    printf("Masukkan bulan (1..12) : ");
    scanf("%d", &bln);
    printf("Masukkan tahunnya : ");
    scanf("%d", &thn);
    
    //cek tahun kabisat
    if(bln == 2) {
        if(thn % 4 == 0) {//thn kabisat
            jhari = 29;
        } else {
            jhari = 28;
 }
    } else {
        jhari = jum_hari[bln-1]; 
    }
 
    //output  
    printf("\nJumlah hari dalam bulan %d tahun %d adalah %d hari\n",bln,thn,jhari);
}
Array Dalam Bahasa C
Output Program
Penjelasan : Program diatas adalah program menghitung jumlah hari pada suatu bulan dan suatu tahun. Lihat pada inisialisasi array. Anda dapat menginisialisasikan nilai satu persatu kedalam variabel array yang diapit kurung kurawal dan dipisah dengan koma.


Variasi Dalam Mendeklarasikan Array

Ada beberapa variasi cara mendeklarasikan sebuah array (dalam hal ini yang berdimensi satu), di antaranya adalah sebagai berikut :

  • int numbers[10];
  • int numbers[10] = {34, 27, 16 };
  • int numbers[] = {2, 3, 45, 79, 14, 5, 0, 28, 1, 0 };
  • char text[] = "Welcome to New Zealand.";
  • float radix[12] = {134.362, 1913.248};
  • double radians[1000];

Pendeklarasian nama variabel array diperbolehkan tidak disertai ukuran yang mengindikasikan besarnya array asalkan langsung diinisialisasi. 

Dalam kondisi seperti ini, C akan menginisialisasi ukuran array tersebut sejumlah elemen yang diberikan di dalam kurung kurawal pada saat proses inisialisasi.


Array Berdimensi Dua
Array Dalam Bahasa C
Contoh Tabel Nilai
Data seperti yang disajikan pada tabel di atas, dapat disimpan pada sebuah array berdimensi dua. Dimensi pertama dari array digunakan untuk menyatakan NRP dan dimensi kedua untuk menyatakan Matakuliah.
Array Dalam Bahasa C
Mendeklarasikan Array Dimensi Dua
Pendeklarasian yang diperlukan untuk menyimpan nilai mahasiswa pada tabel tersebut adalah:
    int nilai[5][2];
5 menyatakan banyaknya mahasiswa dan 2 menyatakan banyaknya matakuliah.

Array nilai dapat diakses dalam bentuk:
    nilai[indeks pertama][indeks kedua]
Array Dalam Bahasa C
Mengakses Array Dimensi Dua
Contoh :
    nilai[0][1] = 87;
merupakan instruksi untuk memberikan nilai 87 ke array nilai untuk indeks pertama = 0 dan indeks kedua bernilai 1.
    printf(“%d”,nilai[2][0]);
merupakan perintah untuk menampilkan elemen yang memiliki indeks pertama = 2 dan indeks kedua = 0.


Array Berdimensi Banyak

C memungkinkan untuk membuat array yang dimensinya lebih dari dua. Bentuk umum pendeklarasian array berdimensi banyak :
    tipe nama_var[ukuran1][ukuran2}…[ukuranN];

Sebagai contoh :
    int data_ruang[2][8][8];
merupakan pendeklarasian array data_ruang sebagai array berdimensi tiga.


Inisialisasi Array Tak Berukuran

Inisialisasi array yang tak berukuran dapat dilakukan untuk array berdimensi satu atau lebih. Untuk array berdimensi lebih dari satu, dimensi terkirilah yang boleh tak berukuran. Dengan cara ini tabel dalam array dapat diperluas atau dikurangi tanpa mengubah ukuran array.

Sebagai contoh :
Array Dalam Bahasa C
Array Tak Berukuran
merupakan pendeklarasian array berdimensi satu yang tak berukuran. Secara otomatis
skala[0] bernilai 1
skala[1] bernilai 2
skala[2] bernilai 4
skala[3] bernilai 6
skala[4] bernilai 8





Demikian artikel tentang Array Dalam Bahasa C. Semoga bermanfaat :)

Konsep Pemrograman Terstruktur Bahasa C


Fungsi sangat bermanfaat untuk membuat program yang terstruktur. Suatu program yang terstruktur dikembangkan dengan menggunakan “topdown design”(rancang atas bawah).

Pada bahasa C suatu program disusun dari sejumlah fungsi dengan tugas tertentu, selanjutnya masing-masing fungsi dipecah-pecah lagi menjadi fungsi yang lebih kecil.

Pembuatan program dengan cara ini akan memudahkan dalam pencarian kesalahan ataupun dalam hal pengembangan dan tentu saja mudah dipahami/ dipelajari.

Dalam bentuk diagram, model suatu program C yang terstruktur adalah seperti yang tertera pada bagan di bawah. Namun sekali lagi perlu diketahui, bahwa pada C semua fungsi sebenarnya berkedudukan sederajat.

Konsep Pemrograman Terstruktur Bahasa C
Model Terstruktur Bahasa C
Fungsi main() terdiri atas fungsi_a() sampai dengan fungsi_n(), menegaskan bahwa dalam program dalam fungsi main() akan memanggil fungsi_a() sampai dengan fungsi_n().

Adapun fungsi-fungsi yang dipanggil oleh fungsi main() tersebut juga bisa memanggil fungsi-fungsi yang lain.





Demikian artikel bahasa C tentang Konsep Pemrograman Terstruktur Bahasa C. Semoga bermanfaat :)

Penggolongan Variabel berdasarkan Kelas Penyimpanan Bahasa C


Suatu variabel, di samping dapat digolongkan berdasarkan jenis/tipe data juga dapat diklasifikasikan berdasarkan kelas penyimpanan (storage class).

Penggolongan berdasarkan kelas penyimpanan berupa :
  • variabel lokal/auto
  • variabel eksternal/global
  • variabel statis
  • variabel register

Variabel Lokal

Variabel lokal adalah variabel yang dideklarasikan dalam sebuah fungsi. Karakteristik variabel lokal adalah :
  • secara otomatis diciptakan ketika fungsi dipanggil dan akan sirna (lenyap) ketika eksekusi terhadap fungsi berakhir.
  • Hanya dikenal oleh fungsi tempat variabel tersebut dideklarasikan.
  • Tidak ada inisialisasi secara otomatis (saat variabel diciptakan, nilainyatak menentu).

Dalam banyak literatur, variabel lokal disebut juga dengan variabel otomatis, sehingga bisa dideklarasikan dengan menambahkan kata kuci auto di depan tipe data variabel.

Kata kunci ini bersifat opsional, biasanya disertakan sebagai penjelas saja.
#include <stdio.h>
void fung_1(void); //deklarasi fungsi

main(){
    int i = 20; //variabel lokal
    fung_1();
    printf("nilai i di dalam main() = %d\n", i);
}

void fung_1(void) {
    int i = 11; //variabel lokal
    printf("nilai i di dalam fung_1() = %d\n", i);
}
Penggolongan Variabel berdasarkan Kelas Penyimpanan Bahasa C
Nilai Keluaran Variabel i Berbeda
Pada fung_1(), deklarasi int x; dapat ditulis menjadi auto int x;. Penerapan variabel lokal yaitu bila variabel hanya dipakai oleh suatu fungsi (tidak dimaksudkan untuk dipakai oleh fungsi yang lain). Pada contoh diatas, antara variabel I dalam fungsi main() dan fung_1() tidak ada kaitannya, sebab masing-masing merupakan variabel lokal.

Variabel Eksternal

Variabel eksternal merupakan variabel yang dideklarasikan di luar fungsi. Karakteristiknya adalah:
  • dapat diakses oleh semua fungsi.
  • kalau tak diberi nilai, secara otomatis diinisialisasi dengan nilai sama dengan nol.
variabel eksternal haruslah dideklarasikan sebelum definisi dari fungsi yang akan mempergunakannya.

Untuk memperjelas bahwa suatu variabel dalam fungsi merupakan variabel eksternal, di dalam fungsi yang menggunakannya dapat mendeklarasikan variabel itu kembali dengan menambahkan kata kunci extern di depan tipe data variabel.
#include <stdio.h>
int i; //deklarasi variabel eksternal
void tambah(void);

main(){
    extern int i; //variabel eksternal
 
    printf("Nilai awal i = %d\n", i);
    i += 7;
    printf("Nilai i kini = %d\n", i);
    tambah();
    printf("Nilai i kini = %d\n", i);
    tambah();
    printf("Nilai i kini = %d\n", i);
    puts("");
}
void tambah(void){
    extern int i; //variabel eksternal
    i++;
}
Penggolongan Variabel berdasarkan Kelas Penyimpanan Bahasa C
Nilai Variabel Bertambah
Kalau dalam suatu program terdapat suatu variabel eksternal, maka suatu fungsi (yang ada pada program yang sama) bisa saja menggunakan nama variabel yang sama dengan variabel eksternal, namun diperlakukan sebagai variabel lokal. Untuk lebih jelasnya perhatikan contoh program berikut ini.
#include <stdio.h>
int i = 273; //deklarasi variabel eksternal
void tambah(void);

main(){
    extern int i; //variabel eksternal
    printf("Nilai awal i = %d\n", i);
    i += 7;
    printf("Nilai i kini = %d\n", i);
    tambah();
    printf("Nilai i kini = %d\n", i);
    tambah();
    printf("Nilai i kini = %d\n", i);
}
void tambah(void){
    int i = 10; //variabel lokal
    i++;
    printf("Nilai i dalam fungsi tambah() = %d\n", i);
}
Penggolongan Variabel berdasarkan Kelas Penyimpanan Bahasa C
Nilai i Pada Fungsi Tetap

Variabel Statis

Variabel statis dapat berupa variabel internal (didefinisikan di dalam fungsi) maupun variabel eksternal. Karakteristiknya adalah :
  • Kalau variabel statis bersifat internal, maka variabel hanya dikenal oleh fungsi tempat variabel dideklarasikan
  • Kalau variabel statis bersifat eksternal, maka variabel dapat dipergunakan oleh semua fungsi yang terletak pada file yang sama, tempat variabel statis dideklarasikan
  • Berbeda dengan variabel lokal, variabel statis tidak akan hilang sekeluarnya dari fungsi (nilai pada variabel akan tetap diingat).
  • Inisialisasi akan dilakukan hanya sekali, yaitu saat fungsi dipanggil yang pertama kali. Kalau tak ada inisialisasi oleh pemrogram secara otomatis akan diberi nilai awal nol
Variabel statis diperoleh dengan menambahkan kata kunci static di depan tipe data variabel.
#include <stdio.h>
void fung_y(void);

main(){
    int y = 20;
    fung_y();
    printf("Nilai y dalam main() = %d\n", y);
    fung_y();
    printf("Nilai y dalam main() = %d\n", y);
}

void fung_y(void){
    static int y; //variabel static, nilai tetap ketika keluar fungsi
    y++;
    printf("Nilai y dalam fung_y() = %d\n", y);
}
Penggolongan Variabel berdasarkan Kelas Penyimpanan Bahasa C
Nilai y Tetap Ketika Keluar Fungsi

Variabel Register

Variabel register adalah variabel yang nilainya disimpan dalam register dan bukan dalam memori RAM. Variabel yang seperti ini hanya bisa diterapkan pada variabel yang lokal atau parameter formal, yang bertipe char atau int.

Variabel register biasa diterapkan pada variabel yang digunakan sebagai pengendali loop. Tujuannya untuk mempercepat proses dalam loop, sebab variabel yang dioperasikan pada register memiliki kecepatan yang jauh lebih tinggi daripada variabel yang diletakkan pada RAM.
#include <stdio.h>
main(){
   register int i;
   int jumlah = 0;
   for(i = 1; i <= 1000000; i++) {
      jumlah = jumlah + i;
   }
   printf("1 + 2 + 3 + ... + 1000000 = %d\n", jumlah);
}
Penggolongan Variabel berdasarkan Kelas Penyimpanan Bahasa C
Proses Compile Lebih Cepat





Demikian artikel tentang Penggolongan Variabel berdasarkan Kelas Penyimpanan Bahasa C. Jika ada yang ditanyakan, silahkan bertanya di kolom komentar. Semoga bermanfaat :)