Materi: Perbedaan antara char[] dan char* dalam Bahasa C + Materi Lengkap tentang Array
1. Perbedaan char[] vs char* dalam Bahasa C
A. char[] (Array Karakter)
• Digunakan untuk menyimpan salinan string.
• Memori disediakan di stack lokal.
• String bisa dimodifikasi (mutable).
Contoh:
char nama[] = "hanipah";
nama[0] = 'H'; // Boleh, karena ini array
B. char* (Pointer ke String Literal)
• Menunjuk ke alamat string literal yang biasanya disimpan di read-only memory.
• Tidak boleh dimodifikasi (immutable).
Contoh:
char *nama = "hanipah";
nama[0] = 'H'; // Error atau crash, karena pointer menunjuk ke string literal
C. Kenapa Ini Error:
bool a = true;
char kenapa[] = a ? "hanipah" : "ardian"; // Error!
• Ternary operator a ? "hanipah" : "ardian" hasilnya char* (pointer)
• char[] tidak bisa langsung diinisialisasi dari ekspresi char*
Solusi:
Gunakan salah satu:
char *kenapa = a ? "hanipah" : "ardian"; //
Atau jika tetap ingin char[], gunakan strcpy():
char kenapa[20];
strcpy(kenapa, a ? "hanipah" : "ardian"); //
2. Materi Lengkap tentang Array dalam Bahasa C
A. Apa Itu Array?
• Array adalah kumpulan variabel bertipe sama yang disimpan secara berurutan dalam
memori.
• Indeks array dimulai dari 0.
B. Deklarasi dan Inisialisasi
int angka[5]; // Deklarasi array 5 elemen
int nilai[] = {10, 20, 30}; // Inisialisasi otomatis 3 elemen
C. Mengakses dan Mengubah Nilai
angka[0] = 1;
printf("%d", angka[0]); // Output: 1
D. Perulangan dengan Array
for (int i = 0; i < 3; i++) {
printf("%d ", nilai[i]);
E. Array Karakter (String)
char teks[] = "Halo"; // Inisialisasi dengan string
char teks2[] = {'H','a','l','o','\0'}; // Sama saja
F. Fungsi Array
• Gunakan strlen(), strcpy(), strcmp(), dll untuk array karakter (string)
G. Batasan Array
• Ukuran harus tetap (fixed size)
• Tidak bisa bertambah dinamis tanpa alokasi memori (pakai pointer + malloc jika ingin
fleksibel)
Kesimpulan:
• Gunakan char[] jika ingin memodifikasi string.
• Gunakan char* jika hanya butuh membaca string literal.
• Array penting dalam pengolahan data berurutan dan digunakan dengan indeks.
Jika kamu membuat aplikasi berbasis C, memahami perbedaan char[] dan char* sangat penting
untuk menghindari bug dan error dalam pengelolaan string dan memori.