DAFTAR LABEL POPULER PENELITIAN.ID
DAFTAR LABEL POPULER PENELITIAN.ID
Jangan Buka Artikel Ini!
DAFTAR ARSIP POSTING PENELITIAN.ID
DAFTAR ARSIP POSTING PENELITIAN.ID
Penggunaan Char pada Bahasa C
- Dapatkan link
- Aplikasi Lainnya
- statement1: char s[] = "kuis";
- statement2: char *s = "kuis";
Char a[10]="boom"; | Char *p="boom" |
---|---|
a adalah array | p adalah variabel pointer |
sizeof(a) = 10 bytes | sizeof(p) = 4 bytes |
a dan &a adalah sama | p dan &p adalah tidak sama |
"boom" disimpan pada section stack dari memori | p disimpan pada stack tetapi "boom" disimpan pada section kode dari memori |
char a[10]="boom"; a = "hello" //invalid a adalah alamat dan string konstanta adalah alamat juga | char *p = "boom"; p = "india"; //valid |
a++ adalah invalid | p++ adalah valid |
char a[10] ="boom"; a [0]='b'; // valid | char *p ="boom"; p[0]='k'; //invalid code section adalah read only |
Statement 'char s[] adalah "kuis1"' yang digunakan untuk menciptakan karakter array yang sama seperti array yang lainnya dan dapat melakukan semua jenis operasi array yang terdapat didalamnya. Hanya saja, hal yang spesial dari statement array tersebut adalah proses inisialisasi yang dilakukan adalah menggunakan empat elemen dengan ukurannya adalah 5, dimana kompilator akan secara otomatis menambahkan karakter '\0' pada program yang dijalankan.
Contoh:
#include <stdio.h>
int main()
{
char s[] = "kuis";
printf("%lu", sizeof(s));
s[0] = 'j';
printf("\n%s", s);
return 0;
}
Sedangkan pada statement 'char *s = "kuis"' akan menciptakan string literal. String literal merupakan bentuk statement yang disimpan pada bagian memori read only pada sebagian besar kompilator program bahasa C.
#include <stdio.h>
int main()
{
char *s = "kuis";
printf("%lu", sizeof(s));
// Membatalkan komentar di
// bawah baris akan
// menyebabkan behavior tidak
// terdefinisi
// (karena segmentation fault
// on gcc)
// s[0] = 'j';
return 0;
}
Jika program berikut dijalankan, maka akan menghasilkan peringatan berupa pesan "warning: deprecated conversion from string constant to 'char*'". Peringatan tersebut terjadi karena nilai s bukan merupakan nilai dalam bentuk pointer const, melainkan berupa variabel yang menyimpan alamat lokasi yang bersifat read-only. Peringatan tersebut dapat dihindari dengan dengan cara melakukan pembuatan pointer ke const seperti diperlihatkan pada contoh berikut:
Contoh:
#include <stdio.h>
int main()
{
const char *s = "kuis";
printf("%lu", sizeof(s));
return 0;
}
- 4 Cara Sederhana untuk Alokasi Dinamis Array 2D pada Bahasa C [klik]
- 5 Kondisi Untuk Melewatkan Array 2D sebagai Parameter Bahasa C [klik]
- Cara Simple untuk Membuat Long String Multibaris Bahasa C [klik]
- Penjelasan Singkat, Tipe Data yang Tidak Memungkinkan untuk Array Bahasa C [klik]
- Fakta Tentang Variabel Length Array Bahasa C [klik]
- Cara Simple Penggunaan Notasi Shorthand Array Bahasa C [klik]
- 2 Cara untuk Mengakses Array di Luar Batas Bahasa C [klik]
- Dapatkan link
- Aplikasi Lainnya
Komentar
Posting Komentar
Hubungi admin melalui Wa : +62-896-2514-6106
Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.
Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.
~ Ikatlah Ilmu dengan Memostingkannya ~
Ada yang bisa beritahu kenapa output dari contoh 2 adalah 8?
BalasHapusUkuran dari pointer adalah 8 pada komputer 64 bit dan 4 pada 32 bit.
HapusUkuran dari variabel pointer apapun adalah 8.
HapusDari apa yang saya baca sebelumnya, saya pikir char *s adalah pointer ke array karakter, dan sebagai array karakter, sifatnya adalah masih bisa dimodifikasi lagi. Tolong jelaskan lebih banyak lagi tentang bagian literal string dengan tautan bacaan lebih lanjut.
BalasHapuschar (*s)[]; --> ini adalah contoh pointer array karakter.
Hapus