Artikel Terbaru

4 Keunggulan Utama Bitcoin

Sebelum membicarakan tentang bitcoin, terlebih dahulu mari pahami apa yang dimaksud dengan uang. Apa sebenarnya yang dimaksud dengan uang? Pada dasarnya, uang adalah segala sesuatu yang mewakili nilai tertentu.

6 Contoh Program Penyimpanan String dalam Bahasa C

Pada program bahasa C, sebuah string dapat dirujuk baik menggunakan pointer menuju karakter atau sebagai array karakter.

char str[4] = "MKN"; /*Satu tambahan untuk string terminator*/
/* OR */
char str[4] = {‘G’, ‘f’, ‘G’, '\0'}; /* '\0' adalah string terminator */


Ketika string dideklarasikan sebagai karakter array, maka string tersebut akan disimpan seperti tipe data array lainnya dalam bahasa C. Contoh, jika str[] adalah variabel auto, maka string akan disimpan pada segmen stack, namun jika string disimpan sebagai tipe variabel global atau static, maka string akan disimpan pada segmen data.

String Menggunakan Pointer Karakter
Penyimpanan string untuk pointer karakter dapat dilakukan dengan dua cara:

satu, String Read Only dalam Segmen Berbagi.
Ketika sebuah nilai string secara langsung ditetapkan ke pointer, pada sebagian besar kompilator, string tersebut akan disimpan dalam block read only atau secara umum pada segmen data yang dibagikan antara fungsi.

char *str = "MKN";

Pada contoh variabel str nilai "MKN" disimpan dalam lokasi berbagi read only, namun pointer str dismpan di dalam memori read-write. Dapat dilakukan perubahan str untuk menunjuk nilai lokasi yang lain tetapi tidak dapat dilakukan perubahan nilai str saat ini. Jadi, string semacam ini hanya boleh digunakan ketika user tidak ingin melakukan perubahan string pada tahap lanjutan dalam suatu program.

dua, Alokasi Dinamis pada Segmen Heap
String disimpan seperti halnya alokasi memori dinamis pada bahasa C dan dibagikan pada berbagai fungsi.

char *str;
int size = 4; /*satu ruang ekstra untuk ‘\0’*/
str = (char *)malloc(sizeof(char)*size);
*(str+0) = 'G';
*(str+1) = 'f';
*(str+2) = 'G';
*(str+3) = '\0';

Perhatikan beberapa contoh berikut untuk lebih memahami tentang cara penyimpanan string.

Contoh 1, Melakukan Modifikasi String
Program berikut akan mengalami crash karena baris program *(str+1) = 'n' mencoba untuk menulis pada memori read only.

int main()

{

char *str;

str = "MKN"

// disimpan pada bagian bagian

// dari read only data segmen

 

*(str+1) = 'n'

// Permasalahan: mencoba untuk

// memodifikasi memori read

// only

 

getchar();

 

return 0;

}


Program berikut dapat bekerja secara sempurna karena str[] disimpan dalam segmen stack writable.

int main()

{

char str[] = "GfG"

// Disimpan pada segmen stack

// seperti variabel auto

// lainnya

 

*(str+1) = 'n'

// Tidak ada masalah: String

// adalah MKN

getchar();

return 0;

}


Program berikut akan bekerja secara sempurna sebagai data pada str yang disimpan dalam segmen heap writable.

int main()

{

int size = 4;

 

// Disimpan pada segmen heap

// seperti alokasi memori

// dinamis lainnya

char *str = (char *)malloc(sizeof(char)*size);

*(str+0) = 'M';

*(str+1) = 'K';

*(str+2) = 'N';

*(str+3) = '\0';

 

*(str+1) = 'n'

// No problem: String saai ini

// adalah MKN

 

getchar();

 

return 0;

}



Contoh 2, Mengembalikan Nilai String dari Sebuah Fungsi
Program berikut dapat bekerja secara sempurna sebagai string yang disimpan dalam segmen berbagi dan data yang disimpan akan tetap ada meskipun telah dilakukan pengembalian nilai dari getString().

char *getString()

{

char *str = "MKN"

// Disimpan pada bagian read

// only dari segmen berbagi

 

// No Problem: tetap di alamat

// str setelah return

// getString()

return str;

}

 

int main()

{

printf("%s", getString());

getchar();

return 0;

}


Program berikut akan bekerja secara sempurna sebagai string yang disimpan dalam segmen heap dan datanya disimpan dalam segmen heap yang sama meskipun dilakukan pengembalian nilai dari getString().

char *getString()

{

int size = 4;

char *str = (char *)malloc(sizeof(char)*size); 

// Disimpan dalam segmen heap

 

*(str+0) = 'M';

*(str+1) = 'K';

*(str+2) = 'N';

*(str+3) = '\0';

// No problem: string tetap

// pada str setelah return

// getString()

 

return str;

}

 

int main()

{

printf("%s", getString());

getchar();

return 0;

}


Tetapi, program berikut kemungkinan akan menghasilkan beberapa garbage data sebagai string yang disimpan dalam frame stack dari fungsi getString() dan data mungkin tidak berada disana setelah mengembalikan nilai getString().

char *getString()

{

char str[] = "MKN"

// Disimpan pada segmen stack.

 

// Problem: string mungkin

// tidak dapat ditampilkan

// setelah return getString().

 

// Permasalahan tersebut dapat

// diselesaikan jika

// menambahkan static sebelum

// char, atau static char

// str[] = "MKN";.

return str;

}

 

int main()

{

printf("%s", getString());

getchar();

return 0;

}


Komentar

  1. Apa yang dimaksud dengan string pada bahasa C?

    BalasHapus
    Balasan
    1. String pada bahasa C adalah beberapa area memori yang telah dicadangkan dalam beberapa cara melaui alokasi memori statis ataupun alokasi memori dinamis yang berisi urutan byte yang mewaliki urutan karakter menurut beberapa aturan pengkodean ASCII dan UTF-8.

      Hapus
    2. Sring merupakan urutan nilai karakter yang dapat diubah-ubah.

      Hapus
    3. String adalah array dimana satu karakter ditempatkan pada setiap sel array tersebut, dengan nilai karakter '\0' ditempatkan pada sel yang mengikuti karakter terakhir dalam string, yang menandai akhir dari string.

      Hapus
  2. Bahasa C sebenarnya tidak memiliki tipe data khusus yang disebut string. String disebuat sebagai array karakter dalam bahasa C.

    BalasHapus

Posting Komentar

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung. :D

Catatan: setiap iklan yang ditayangkan pada blog ini bersumber dari google adsense. Dengan jenis iklan yang dipilih adalah, sebagai berikut.

POIN 1, Iklan yang ditampilkan hanya boleh berbahasa indonesia atau berbahasa inggris. Tidak menerima jenis iklan dalam bahasa yang lain selain yang telah disebutkan karena blog ini dibuat untuk para pengunjung dari negara atau orang yang berbahasa Indonesia.

POIN 2, Setiap gambar yang ditampilkan pada iklan sifatnya tidak mengganggu para pengunjung yang melihat blog, atau tidak boleh menampilkan gambar yang bersifat menjijikkan atau merangsang rasa mual.

POIN 3, Jenis iklan yang dipasang bukan merupakan iklan spam, atau berisi dan mengarahkan pengunjung ke alamat yang berbahaya atau bersifat penipuan.

POIN 4, Segala bentuk iklan tunduk dan patuh pada ketentuan dari pihak Adsense google dan pemilik blog.

POIN 5, Segala jenis iklan yang tidak bertentangan dengan poin 1-4 yang dijelaskan sebelumnya, maka iklan tersebut dapat ditampilkan pada blog.

POIN 6, Jika ada pihak ketika yang ingin memasang iklan pada blog ini secara langsung, maka dapat menghubungi pemilik blog melalui kontak 0882 3218 8316.



~ Ikatlah Ilmu dengan Memostingkannya ~

Hot Artikel

Enkapsulasi pada Java

Perbedaan stdio.h dan stdlib.h pada Bahasa C

6 Tahap Utama dalam Melakukan Kompilasi Program Hello World Java

4 Contoh Program Java dan Multiple Inheritance

3 Jenis Utama Looping pada Java