Contoh Program Array C dan Penjelasannya: Panduan Lengkap untuk Pemula

By | August 16, 2025

Memahami contoh program array C dan penjelasannya adalah langkah fundamental dalam mempelajari struktur data. Array merupakan salah satu konsep paling penting dalam pemrograman C yang memungkinkan penyimpanan multiple data dengan tipe yang sama dalam satu variabel. Artikel ini akan membahas berbagai contoh program array mulai dari yang sederhana hingga kompleks, lengkap dengan penjelasan detail dan implementasi praktis.

Table of Contents

Apa itu Array dalam Bahasa C?

Array adalah kumpulan elemen dengan tipe data yang sama yang disimpan dalam lokasi memori yang berurutan. Setiap elemen dalam array dapat diakses menggunakan indeks yang dimulai dari 0. Array sangat berguna untuk menyimpan dan mengelola data dalam jumlah besar dengan efisien.

Visualisasi Array

10
20
30
40
50
Index: [0] [1] [2] [3] [4]
💡 Keunggulan Array:
• Akses data yang cepat menggunakan indeks
• Penyimpanan data yang efisien dalam memori
• Mudah untuk iterasi dan manipulasi data
• Mendukung operasi matematika dan logika
• Dasar untuk struktur data yang lebih kompleks

Sintaks Dasar Array dalam C

Sebelum mempelajari contoh program, penting untuk memahami sintaks dasar deklarasi dan inisialisasi array:

// Deklarasi array
tipe_data nama_array[ukuran];// Contoh deklarasi
int angka[5]; // Array integer dengan 5 elemen
float nilai[10]; // Array float dengan 10 elemen
char huruf[26]; // Array karakter dengan 26 elemen// Inisialisasi array
int data[] = {1, 2, 3, 4, 5};
int matrix[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}};

Contoh Program Array C #1: Array Satu Dimensi Dasar

Mari mulai dengan contoh program array satu dimensi yang paling sederhana:

📊 Program Array Dasar
#include <stdio.h>int main() {
// Deklarasi dan inisialisasi array
int angka[5] = {10, 20, 30, 40, 50};
int i;// Menampilkan elemen array
printf(“=== ISI ARRAY ===\n”);
for (i = 0; i < 5; i++) {
printf(“angka[%d] = %d\n”, i, angka[i]);
}// Menghitung jumlah total
int total = 0;
for (i = 0; i < 5; i++) {
total += angka[i];
}

printf(“\nJumlah total: %d\n”, total);
printf(“Rata-rata: %.2f\n”, (float)total / 5);

return 0;
}

Output:
=== ISI ARRAY ===
angka[0] = 10
angka[1] = 20
angka[2] = 30
angka[3] = 40
angka[4] = 50Jumlah total: 150
Rata-rata: 30.00
Penjelasan Program:
• Array angka[5] dideklarasikan dengan 5 elemen
• Inisialisasi dilakukan bersamaan dengan deklarasi
• Loop for digunakan untuk mengakses setiap elemen
• Indeks array dimulai dari 0 hingga n-1
• Perhitungan total dan rata-rata menggunakan akumulasi

Contoh Program Array C #2: Input Array dari User

Program berikut mendemonstrasikan cara menerima input array dari pengguna:

⌨️ Program Input Array Dinamis
#include <stdio.h>int main() {
int n, i;// Input ukuran array
printf(“Masukkan jumlah elemen array: “);
scanf(“%d”, &n);int data[n]; // Variable Length Array (VLA)

// Input elemen array
printf(“Masukkan %d elemen:\n”, n);
for (i = 0; i < n; i++) {
printf(“Elemen ke-%d: “, i + 1);
scanf(“%d”, &data[i]);
}

// Menampilkan array
printf(“\n=== ARRAY YANG DIMASUKKAN ===\n”);
for (i = 0; i < n; i++) {
printf(“%d “, data[i]);
}

// Mencari nilai maksimum dan minimum
int max = data[0], min = data[0];
for (i = 1; i < n; i++) {
if (data[i] > max) max = data[i];
if (data[i] < min) min = data[i];
}

printf(“\n\nNilai maksimum: %d\n”, max);
printf(“Nilai minimum: %d\n”, min);

return 0;
}

Output (contoh input):
Masukkan jumlah elemen array: 4
Masukkan 4 elemen:
Elemen ke-1: 25
Elemen ke-2: 10
Elemen ke-3: 35
Elemen ke-4: 15=== ARRAY YANG DIMASUKKAN ===
25 10 35 15Nilai maksimum: 35
Nilai minimum: 10

Contoh Program Array C #3: Pencarian dalam Array

Untuk mempelajari algoritma pencarian yang lebih advanced, Anda bisa mengikuti Algoritma Pencarian dan Sorting di Kelas Programmer.

🔍 Program Pencarian Linear
#include <stdio.h>int main() {
int data[] = {15, 23, 8, 42, 17, 31, 9, 25};
int ukuran = sizeof(data) / sizeof(data[0]);
int cari, i, ditemukan = 0, posisi = -1;// Menampilkan array
printf(“Array: “);
for (i = 0; i < ukuran; i++) {
printf(“%d “, data[i]);
}// Input nilai yang dicari
printf(“\n\nMasukkan nilai yang dicari: “);
scanf(“%d”, &cari);

// Pencarian linear
for (i = 0; i < ukuran; i++) {
if (data[i] == cari) {
ditemukan = 1;
posisi = i;
break; // Keluar dari loop jika ditemukan
}
}

// Menampilkan hasil
if (ditemukan) {
printf(“Nilai %d ditemukan pada indeks ke-%d\n”, cari, posisi);
printf(“Posisi dalam array: %d\n”, posisi + 1);
} else {
printf(“Nilai %d tidak ditemukan dalam array\n”, cari);
}

// Menghitung berapa kali nilai muncul
int jumlah = 0;
for (i = 0; i < ukuran; i++) {
if (data[i] == cari) {
jumlah++;
}
}

if (jumlah > 0) {
printf(“Nilai %d muncul sebanyak %d kali\n”, cari, jumlah);
}

return 0;
}

Output (contoh input 23):
Array: 15 23 8 42 17 31 9 25Masukkan nilai yang dicari: 23
Nilai 23 ditemukan pada indeks ke-1
Posisi dalam array: 2
Nilai 23 muncul sebanyak 1 kali

Contoh Program Array C #4: Sorting Array (Bubble Sort)

🔄 Program Sorting Bubble Sort
#include <stdio.h>void bubbleSort(int arr[], int n) {
int i, j, temp;for (i = 0; i < n – 1; i++) {
for (j = 0; j < n – i – 1; j++) {
if (arr[j] > arr[j + 1]) {
// Tukar elemen
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}void tampilkanArray(int arr[], int n) {
int i;
for (i = 0; i < n; i++) {
printf(“%d “, arr[i]);
}
printf(“\n”);
}

int main() {
int data[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(data) / sizeof(data[0]);

printf(“Array sebelum sorting:\n”);
tampilkanArray(data, n);

// Melakukan bubble sort
bubbleSort(data, n);

printf(“Array setelah sorting:\n”);
tampilkanArray(data, n);

// Mencari median
float median;
if (n % 2 == 0) {
median = (data[n/21] + data[n/2]) / 2.0;
} else {
median = data[n/2];
}

printf(“Median: %.1f\n”, median);

return 0;
}

Output:
Array sebelum sorting:
64 34 25 12 22 11 90
Array setelah sorting:
11 12 22 25 34 64 90
Median: 25.0

Contoh Program Array C #5: Array Dua Dimensi (Matrix)

Array dua dimensi atau matrix sangat berguna untuk menyimpan data dalam bentuk tabel:

📋 Program Matrix 3×3
#include <stdio.h>int main() {
int matrix[3][3];
int i, j;
int jumlah_baris[3] = {0};
int jumlah_kolom[3] = {0};
int total = 0;// Input elemen matrix
printf(“Masukkan elemen matrix 3×3:\n”);
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf(“Matrix[%d][%d]: “, i, j);
scanf(“%d”, &matrix[i][j]);
}
}// Menampilkan matrix
printf(“\n=== MATRIX 3×3 ===\n”);
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf(“%4d “, matrix[i][j]);
}
printf(“\n”);
}

// Menghitung jumlah per baris dan kolom
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
jumlah_baris[i] += matrix[i][j];
jumlah_kolom[j] += matrix[i][j];
total += matrix[i][j];
}
}

// Menampilkan hasil perhitungan
printf(“\n=== ANALISIS MATRIX ===\n”);
for (i = 0; i < 3; i++) {
printf(“Jumlah baris %d: %d\n”, i + 1, jumlah_baris[i]);
}

printf(“\n”);
for (j = 0; j < 3; j++) {
printf(“Jumlah kolom %d: %d\n”, j + 1, jumlah_kolom[j]);
}

printf(“\nTotal semua elemen: %d\n”, total);
printf(“Rata-rata: %.2f\n”, (float)total / 9);

return 0;
}

Output (contoh input):
Masukkan elemen matrix 3×3:
Matrix[0][0]: 1
Matrix[0][1]: 2
Matrix[0][2]: 3
Matrix[1][0]: 4
Matrix[1][1]: 5
Matrix[1][2]: 6
Matrix[2][0]: 7
Matrix[2][1]: 8
Matrix[2][2]: 9=== MATRIX 3×3 ===
1 2 3
4 5 6
7 8 9=== ANALISIS MATRIX ===
Jumlah baris 1: 6
Jumlah baris 2: 15
Jumlah baris 3: 24Jumlah kolom 1: 12
Jumlah kolom 2: 15
Jumlah kolom 3: 18

Total semua elemen: 45
Rata-rata: 5.00

Contoh Program Array C #6: Manipulasi String (Array Karakter)

String dalam C adalah array karakter yang diakhiri dengan null terminator (\0):

🔤 Program Manipulasi String
#include <stdio.h>
#include <string.h>int hitungKarakter(char str[], char c) {
int count = 0, i;
for (i = 0; str[i] != ‘\0’; i++) {
if (str[i] == c) count++;
}
return count;
}void balikString(char str[]) {
int len = strlen(str);
int i;
char temp;for (i = 0; i < len / 2; i++) {
temp = str[i];
str[i] = str[len – 1 – i];
str[len – 1 – i] = temp;
}
}

int main() {
char kalimat[100];
char cari;
int i, vokal = 0, konsonan = 0;

printf(“Masukkan kalimat: “);
fgets(kalimat, sizeof(kalimat), stdin);

// Menghilangkan newline dari fgets
kalimat[strcspn(kalimat, “\n”)] = 0;

printf(“Kalimat asli: %s\n”, kalimat);
printf(“Panjang string: %d karakter\n”, (int)strlen(kalimat));

// Menghitung vokal dan konsonan
for (i = 0; kalimat[i] != ‘\0’; i++) {
char c = kalimat[i];
if ((c >= ‘a’ && c <= ‘z’) || (c >= ‘A’ && c <= ‘Z’)) {
if (c == ‘a’ || c == ‘e’ || c == ‘i’ || c == ‘o’ || c == ‘u’ ||
c == ‘A’ || c == ‘E’ || c == ‘I’ || c == ‘O’ || c == ‘U’) {
vokal++;
} else {
konsonan++;
}
}
}

printf(“Jumlah vokal: %d\n”, vokal);
printf(“Jumlah konsonan: %d\n”, konsonan);

// Mencari karakter tertentu
printf(“Masukkan karakter yang dicari: “);
scanf(” %c”, &cari);

int jumlah = hitungKarakter(kalimat, cari);
printf(“Karakter ‘%c’ muncul %d kali\n”, cari, jumlah);

// Membalik string
balikString(kalimat);
printf(“String terbalik: %s\n”, kalimat);

return 0;
}

Output (contoh input “Hello World”):
Masukkan kalimat: Hello World
Kalimat asli: Hello World
Panjang string: 11 karakter
Jumlah vokal: 3
Jumlah konsonan: 7
Masukkan karakter yang dicari: l
Karakter ‘l’ muncul 3 kali
String terbalik: dlroW olleH

Contoh Program Array C #7: Array Struktur

Untuk memahami konsep struktur data yang lebih kompleks, silakan pelajari Struktur Data Advanced di Kelas Programmer.

👥 Program Array Struktur Mahasiswa
#include <stdio.h>
#include <string.h>struct Mahasiswa {
char nama[50];
char nim[15];
float ipk;
int semester;
};void tampilkanMahasiswa(struct Mahasiswa mhs[], int n) {
int i;
printf(“\n=== DATA MAHASISWA ===\n”);
printf(“%-20s %-12s %-6s %-8s\n”, “Nama”, “NIM”, “IPK”, “Semester”);
printf(“—————————————————-\n”);for (i = 0; i < n; i++) {
printf(“%-20s %-12s %-6.2f %-8d\n”,
mhs[i].nama, mhs[i].nim, mhs[i].ipk, mhs[i].semester);
}
}

float hitungRataIPK(struct Mahasiswa mhs[], int n) {
float total = 0;
int i;

for (i = 0; i < n; i++) {
total += mhs[i].ipk;
}

return total / n;
}

int cariMahasiswaTerbaik(struct Mahasiswa mhs[], int n) {
int terbaik = 0;
int i;

for (i = 1; i < n; i++) {
if (mhs[i].ipk > mhs[terbaik].ipk) {
terbaik = i;
}
}

return terbaik;
}

int main() {
struct Mahasiswa mahasiswa[3];
int i;

// Input data mahasiswa
printf(“=== INPUT DATA MAHASISWA ===\n”);
for (i = 0; i < 3; i++) {
printf(“\nMahasiswa ke-%d:\n”, i + 1);

printf(“Nama: “);
scanf(“%s”, mahasiswa[i].nama);

printf(“NIM: “);
scanf(“%s”, mahasiswa[i].nim);

printf(“IPK: “);
scanf(“%f”, &mahasiswa[i].ipk);

printf(“Semester: “);
scanf(“%d”, &mahasiswa[i].semester);
}

// Menampilkan data
tampilkanMahasiswa(mahasiswa, 3);

// Analisis data
float rataIPK = hitungRataIPK(mahasiswa, 3);
int indexTerbaik = cariMahasiswaTerbaik(mahasiswa, 3);

printf(“\n=== ANALISIS ===\n”);
printf(“Rata-rata IPK: %.2f\n”, rataIPK);
printf(“Mahasiswa terbaik: %s (IPK: %.2f)\n”,
mahasiswa[indexTerbaik].nama, mahasiswa[indexTerbaik].ipk);

// Menghitung mahasiswa per semester
int semester_count[9] = {0}; // Asumsi maksimal semester 8
for (i = 0; i < 3; i++) {
if (mahasiswa[i].semester >= 1 && mahasiswa[i].semester <= 8) {
semester_count[mahasiswa[i].semester]++;
}
}

printf(“\nDistribusi per semester:\n”);
for (i = 1; i <= 8; i++) {
if (semester_count[i] > 0) {
printf(“Semester %d: %d mahasiswa\n”, i, semester_count[i]);
}
}

return 0;
}

Contoh Program Array C #8: Operasi Matrix

🧮 Program Operasi Matrix
#include <stdio.h>void inputMatrix(int matrix[][3], int baris, char nama[]) {
int i, j;
printf(“Masukkan elemen %s (%dx%d):\n”, nama, baris, 3);
for (i = 0; i < baris; i++) {
for (j = 0; j < 3; j++) {
printf(“%s[%d][%d]: “, nama, i, j);
scanf(“%d”, &matrix[i][j]);
}
}
}void tampilkanMatrix(int matrix[][3], int baris, char nama[]) {
int i, j;
printf(“\n%s:\n”, nama);
for (i = 0; i < baris; i++) {
for (j = 0; j < 3; j++) {
printf(“%4d “, matrix[i][j]);
}
printf(“\n”);
}
}void tambahMatrix(int a[][3], int b[][3], int hasil[][3], int baris) {
int i, j;
for (i = 0; i < baris; i++) {
for (j = 0; j < 3; j++) {
hasil[i][j] = a[i][j] + b[i][j];
}
}
}

void transposeMatrix(int matrix[][3], int transpose[][3], int baris) {
int i, j;
for (i = 0; i < baris; i++) {
for (j = 0; j < 3; j++) {
transpose[j][i] = matrix[i][j];
}
}
}

int main() {
int matrixA[3][3], matrixB[3][3];
int hasil[3][3], transpose[3][3];

// Input matrix A dan B
inputMatrix(matrixA, 3, “Matrix A”);
inputMatrix(matrixB, 3, “Matrix B”);

// Menampilkan matrix asli
tampilkanMatrix(matrixA, 3, “Matrix A”);
tampilkanMatrix(matrixB, 3, “Matrix B”);

// Penjumlahan matrix
tambahMatrix(matrixA, matrixB, hasil, 3);
tampilkanMatrix(hasil, 3, “Matrix A + B”);

// Transpose matrix A
transposeMatrix(matrixA, transpose, 3);
tampilkanMatrix(transpose, 3, “Transpose Matrix A”);

// Mencari determinan matrix 3×3 (Matrix A)
int det = matrixA[0][0] * (matrixA[1][1] * matrixA[2][2] – matrixA[1][2] * matrixA[2][1])
– matrixA[0][1] * (matrixA[1][0] * matrixA[2][2] – matrixA[1][2] * matrixA[2][0])
+ matrixA[0][2] * (matrixA[1][0] * matrixA[2][1] – matrixA[1][1] * matrixA[2][0]);

printf(“\nDeterminan Matrix A: %d\n”, det);

return 0;
}

Contoh Program Array C #9: Array Dinamis dengan Malloc

💾 Program Array Dinamis
#include <stdio.h>
#include <stdlib.h>int main() {
int n, i;
int *array;
int pilihan, nilai, posisi;// Input ukuran array
printf(“Masukkan ukuran array: “);
scanf(“%d”, &n);// Alokasi memori dinamis
array = (int*)malloc(n * sizeof(int));

if (array == NULL) {
printf(“Error: Gagal mengalokasi memori!\n”);
return 1;
}

// Input elemen array
printf(“Masukkan %d elemen:\n”, n);
for (i = 0; i < n; i++) {
printf(“Elemen ke-%d: “, i + 1);
scanf(“%d”, &array[i]);
}

do {
// Menu operasi
printf(“\n=== MENU OPERASI ARRAY ===\n”);
printf(“1. Tampilkan array\n”);
printf(“2. Cari nilai\n”);
printf(“3. Update nilai\n”);
printf(“4. Hitung statistik\n”);
printf(“5. Keluar\n”);
printf(“Pilihan: “);
scanf(“%d”, &pilihan);

switch (pilihan) {
case 1:
printf(“Array: “);
for (i = 0; i < n; i++) {
printf(“%d “, array[i]);
}
printf(“\n”);
break;

case 2:
printf(“Masukkan nilai yang dicari: “);
scanf(“%d”, &nilai);

int ditemukan = 0;
for (i = 0; i < n; i++) {
if (array[i] == nilai) {
printf(“Nilai %d ditemukan pada indeks %d\n”, nilai, i);
ditemukan = 1;
}
}

if (!ditemukan) {
printf(“Nilai %d tidak ditemukan\n”, nilai);
}
break;

case 3:
printf(“Masukkan posisi (0-%d): “, n-1);
scanf(“%d”, &posisi);

if (posisi >= 0 && posisi < n) {
printf(“Nilai lama: %d\n”, array[posisi]);
printf(“Masukkan nilai baru: “);
scanf(“%d”, &array[posisi]);
printf(“Nilai berhasil diupdate!\n”);
} else {
printf(“Posisi tidak valid!\n”);
}
break;

case 4:
// Hitung statistik
int sum = 0, max = array[0], min = array[0];

for (i = 0; i < n; i++) {
sum += array[i];
if (array[i] > max) max = array[i];
if (array[i] < min) min = array[i];
}

printf(“=== STATISTIK ARRAY ===\n”);
printf(“Jumlah: %d\n”, sum);
printf(“Rata-rata: %.2f\n”, (float)sum / n);
printf(“Maksimum: %d\n”, max);
printf(“Minimum: %d\n”, min);
break;

case 5:
printf(“Terima kasih!\n”);
break;

default:
printf(“Pilihan tidak valid!\n”);
}
} while (pilihan != 5);

// Bebaskan memori
free(array);

return 0;
}

Contoh Program Array C #10: Histogram dan Analisis Data

Untuk mempelajari teknik analisis data yang lebih mendalam, kunjungi Data Analysis Programming di Kelas Programmer.

📊 Program Histogram Data
#include <stdio.h>int main() {
int data[] = {85, 92, 78, 96, 87, 91, 83, 88, 94, 79,
90, 86, 82, 95, 89, 77, 93, 84, 81, 97
};
int n = sizeof(data) / sizeof(data[0]);
int histogram[11] = {0}; // 70-79, 80-89, 90-99
int i, j;printf(“=== DATA NILAI MAHASISWA ===\n”);
printf(“Jumlah data: %d\n”, n);// Menampilkan data
printf(“Data: “);
for (i = 0; i < n; i++) {
printf(“%d “, data[i]);
if ((i + 1) % 10 == 0) printf(“\n “);
}
printf(“\n”);

// Membuat histogram berdasarkan rentang nilai
for (i = 0; i < n; i++) {
if (data[i] >= 70 && data[i] <= 79) {
histogram[0]++;
} else if (data[i] >= 80 && data[i] <= 89) {
histogram[1]++;
} else if (data[i] >= 90 && data[i] <= 99) {
histogram[2]++;
}
}

// Menampilkan histogram
printf(“\n=== HISTOGRAM NILAI ===\n”);
printf(“70-79: “);
for (j = 0; j < histogram[0]; j++) printf(“*”);
printf(” (%d)\n”, histogram[0]);

printf(“80-89: “);
for (j = 0; j < histogram[1]; j++) printf(“*”);
printf(” (%d)\n”, histogram[1]);

printf(“90-99: “);
for (j = 0; j < histogram[2]; j++) printf(“*”);
printf(” (%d)\n”, histogram[2]);

// Analisis statistik
int sum = 0, max = data[0], min = data[0];
for (i = 0; i < n; i++) {
sum += data[i];
if (data[i] > max) max = data[i];
if (data[i] < min) min = data[i];
}

float rata = (float)sum / n;

// Hitung standar deviasi
float variance = 0;
for (i = 0; i < n; i++) {
variance += (data[i] – rata) * (data[i] – rata);
}
variance /= n;

printf(“\n=== ANALISIS STATISTIK ===\n”);
printf(“Rata-rata: %.2f\n”, rata);
printf(“Nilai tertinggi: %d\n”, max);
printf(“Nilai terendah: %d\n”, min);
printf(“Range: %d\n”, max – min);
printf(“Variance: %.2f\n”, variance);

// Menentukan grade distribusi
int lulus = 0;
for (i = 0; i < n; i++) {
if (data[i] >= 75) lulus++;
}

printf(“\n=== HASIL EVALUASI ===\n”);
printf(“Mahasiswa lulus (≥75): %d dari %d (%.1f%%)\n”,
lulus, n, (float)lulus / n * 100);
printf(“Mahasiswa tidak lulus: %d dari %d (%.1f%%)\n”,
n – lulus, n, (float)(n – lulus) / n * 100);

return 0;
}

Output:
=== DATA NILAI MAHASISWA ===
Jumlah data: 20
Data: 85 92 78 96 87 91 83 88 94 79
90 86 82 95 89 77 93 84 81 97=== HISTOGRAM NILAI ===
70-79: ** (2)
80-89: ********* (9)
90-99: ********* (9)=== ANALISIS STATISTIK ===
Rata-rata: 87.60
Nilai tertinggi: 97
Nilai terendah: 77
Range: 20
Variance: 32.44=== HASIL EVALUASI ===
Mahasiswa lulus (≥75): 20 dari 20 (100.0%)
Mahasiswa tidak lulus: 0 dari 20 (0.0%)

Tips dan Best Practices Array dalam C

🎯 Best Practices Array:
• Selalu inisialisasi array sebelum digunakan
• Periksa batas array untuk menghindari buffer overflow
• Gunakan konstanta untuk ukuran array yang tetap
• Bebaskan memori dinamis dengan free() setelah selesai
• Gunakan fungsi untuk operasi array yang kompleks
• Dokumentasikan tujuan dan struktur array dalam komentar

Tabel Perbandingan Jenis Array

Jenis Array Deklarasi Keunggulan Kekurangan
Static Array int arr[10]; Cepat, sederhana Ukuran tetap
Dynamic Array int *arr = malloc(n*sizeof(int)); Ukuran fleksibel Perlu manajemen memori
VLA (Variable Length) int arr[n]; Ukuran runtime Terbatas pada fungsi
Multidimensional int arr[3][4]; Struktur data kompleks Konsumsi memori besar

Common Errors dan Debugging

⚠️ Error Umum dalam Array:
Array Index Out of Bounds: Mengakses indeks di luar batas array
Uninitialized Array: Menggunakan array tanpa inisialisasi
Memory Leak: Tidak membebaskan memori dinamis
Buffer Overflow: Menulis data melebihi kapasitas array
Wrong Size Calculation: Salah menghitung ukuran array

Contoh Debugging Array

// ❌ SALAH – Array index out of bounds
int arr[5];
for (i = 0; i <= 5; i++) { // Error: i=5 keluar batas
arr[i] = i;
}// ✅ BENAR – Periksa batas array
int arr[5];
for (i = 0; i < 5; i++) { // Benar: i < 5
arr[i] = i;
}// ❌ SALAH – Memory leak
int *ptr = malloc(10 * sizeof(int));
// … menggunakan ptr …
// Lupa free(ptr);// ✅ BENAR – Proper memory management
int *ptr = malloc(10 * sizeof(int));
if (ptr != NULL) {
// … menggunakan ptr …
free(ptr);
ptr = NULL;
}

Latihan dan Exercise

💪 Latihan Mandiri

Cobalah buat program array C untuk:

  1. Mencari elemen terbesar kedua dalam array
  2. Menggabungkan dua array yang sudah terurut
  3. Mencari pasangan elemen yang jumlahnya sama dengan target
  4. Merotasi array ke kiri atau kanan sebanyak n posisi
  5. Mencari subarray dengan jumlah maksimum
  6. Menghapus duplikat dari array
  7. Implementasi stack menggunakan array
  8. Mencari intersection dari dua array

Contoh Solusi: Mencari Elemen Terbesar Kedua

#include <stdio.h>
#include <limits.h>int cariTerbesarKedua(int arr[], int n) {
int terbesar = INT_MIN, terbesarKedua = INT_MIN;
int i;for (i = 0; i < n; i++) {
if (arr[i] > terbesar) {
terbesarKedua = terbesar;
terbesar = arr[i];
} else if (arr[i] > terbesarKedua && arr[i] != terbesar) {
terbesarKedua = arr[i];
}
}return terbesarKedua;
}

int main() {
int data[] = {12, 35, 1, 10, 34, 1};
int n = sizeof(data) / sizeof(data[0]);

int hasil = cariTerbesarKedua(data, n);

if (hasil != INT_MIN) {
printf(“Elemen terbesar kedua: %d\n”, hasil);
} else {
printf(“Tidak ada elemen terbesar kedua\n”);
}

return 0;
}

❓ Frequently Asked Questions (FAQ)

Q: Apa perbedaan antara array dan pointer dalam bahasa C?
A: Array adalah kumpulan elemen dengan tipe sama yang disimpan berurutan, sedangkan pointer adalah variabel yang menyimpan alamat memori. Array name adalah pointer konstan ke elemen pertama, namun pointer dapat diubah untuk menunjuk ke alamat lain.
Q: Bagaimana cara mengetahui ukuran array dalam C?
A: Gunakan sizeof(array)/sizeof(array[0]) untuk array statis. Untuk array dinamis, Anda harus menyimpan ukurannya dalam variabel terpisah karena sizeof() akan mengembalikan ukuran pointer, bukan array.
Q: Mengapa indeks array dimulai dari 0 bukan 1?
A: Indeks array dimulai dari 0 karena indeks merepresentasikan offset dari alamat base array. Elemen pertama berada di alamat base + 0, elemen kedua di base + 1*sizeof(type), dan seterusnya.
Q: Apa itu buffer overflow dan bagaimana mencegahnya?
A: Buffer overflow terjadi ketika program menulis data melebihi batas array. Pencegahan: selalu periksa batas array, gunakan fungsi aman seperti strncpy() instead of strcpy(), dan validasi input user.
Q: Kapan sebaiknya menggunakan array dinamis vs array statis?
A: Gunakan array statis jika ukuran sudah diketahui dan tetap. Gunakan array dinamis jika ukuran ditentukan saat runtime atau dapat berubah. Array dinamis lebih fleksibel tapi memerlukan manajemen memori manual.
Q: Bagaimana cara passing array ke fungsi dalam C?
A: Array di-pass by reference secara otomatis. Deklarasi parameter bisa menggunakan array notation (int arr[]) atau pointer notation (int *arr). Ukuran array harus di-pass sebagai parameter terpisah.
Q: Apa perbedaan antara array 1D dan 2D dalam hal penyimpanan memori?
A: Array 1D disimpan secara linear berurutan. Array 2D disimpan row-major order (baris demi baris). Misalnya arr[2][3] disimpan sebagai arr[0][0], arr[0][1], arr[0][2], arr[1][0], arr[1][1], arr[1][2].
Q: Bagaimana cara menginisialisasi array multidimensi?
A: Bisa menggunakan nested braces: int arr[2][3] = {{1,2,3}, {4,5,6}}; atau flat initialization: int arr[2][3] = {1,2,3,4,5,6}; Compiler akan mengisi row-major order secara otomatis.

Kesimpulan

Contoh program array C dan penjelasannya yang telah dibahas dalam artikel ini memberikan pemahaman komprehensif tentang penggunaan array dalam pemrograman C. Mulai dari array satu dimensi sederhana hingga implementasi struktur data yang kompleks, setiap contoh dirancang untuk membangun skill programming secara bertahap.

🎯 Key Takeaways:
• Array adalah struktur data fundamental yang wajib dikuasai
• Pahami perbedaan array statis, dinamis, dan multidimensi
• Selalu perhatikan batas array untuk menghindari error
• Praktikkan berbagai algoritma sorting dan searching
• Gunakan array untuk memecahkan masalah real-world
• Kombinasikan array dengan struktur data lain untuk solusi optimal

Penguasaan array dalam bahasa C akan menjadi fondasi kuat untuk mempelajari struktur data yang lebih advanced seperti linked list, stack, queue, dan tree. Terus berlatih dengan berbagai variasi soal dan implementasi untuk meningkatkan kemampuan problem-solving Anda. Array bukan hanya sekedar penyimpanan data, tetapi juga alat powerful untuk mengorganisir dan memanipulasi informasi secara efisien.

Contoh Program Array C dan Penjelasannya: Panduan Lengkap untuk Pemula

Memahami contoh program array C dan penjelasannya adalah langkah fundamental dalam mempelajari struktur data. Array merupakan salah satu konsep paling penting dalam pemrograman C yang memungkinkan penyimpanan multiple data dengan tipe yang sama dalam satu variabel. Artikel ini akan membahas berbagai contoh program array mulai dari yang sederhana hingga kompleks, lengkap dengan penjelasan detail dan implementasi praktis.

Apa itu Array dalam Bahasa C?

Array adalah kumpulan elemen dengan tipe data yang sama yang disimpan dalam lokasi memori yang berurutan. Setiap elemen dalam array dapat diakses menggunakan indeks yang dimulai dari 0. Array sangat berguna untuk menyimpan dan mengelola data dalam jumlah besar dengan efisien.

💡 Keunggulan Array:
• Akses data yang cepat menggunakan indeks
• Penyimpanan data yang efisien dalam memori
• Mudah untuk iterasi dan manipulasi data
• Mendukung operasi matematika dan logika
• Dasar untuk struktur data yang lebih kompleks

Sintaks Dasar Array dalam C

Sebelum mempelajari contoh program, penting untuk memahami sintaks dasar deklarasi dan inisialisasi array:

// Deklarasi array
tipe_data nama_array[ukuran];

// Contoh deklarasi
int angka[5];        // Array integer dengan 5 elemen
float nilai[10];     // Array float dengan 10 elemen
char huruf[26];      // Array karakter dengan 26 elemen

// Inisialisasi array
int data[] = {1, 2, 3, 4, 5};
int matrix[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}};

Contoh Program Array C #1: Array Satu Dimensi Dasar

Mari mulai dengan contoh program array satu dimensi yang paling sederhana:

📊 Program Array Dasar

#include <stdio.h>

int main() {
    // Deklarasi dan inisialisasi array
    int angka[5] = {10, 20, 30, 40, 50};
    int i;
    
    // Menampilkan elemen array
    printf("=== ISI ARRAY ===\n");
    for (i = 0; i < 5; i++) {
        printf("angka[%d] = %d\n", i, angka[i]);
    }
    
    // Menghitung jumlah total
    int total = 0;
    for (i = 0; i < 5; i++) {
        total += angka[i];
    }
    
    printf("\nJumlah total: %d\n", total);
    printf("Rata-rata: %.2f\n", (float)total / 5);
    
    return 0;
}

Output:

=== ISI ARRAY ===
angka[0] = 10
angka[1] = 20
angka[2] = 30
angka[3] = 40
angka[4] = 50

Jumlah total: 150
Rata-rata: 30.00

Penjelasan Program:
• Array angka[5] dideklarasikan dengan 5 elemen
• Inisialisasi dilakukan bersamaan dengan deklarasi
• Loop for digunakan untuk mengakses setiap elemen
• Indeks array dimulai dari 0 hingga n-1
• Perhitungan total dan rata-rata menggunakan akumulasi

Contoh Program Array C #2: Input Array dari User

Program berikut mendemonstrasikan cara menerima input array dari pengguna:

⌨️ Program Input Array Dinamis

#include <stdio.h>

int main() {
    int n, i;
    
    // Input ukuran array
    printf("Masukkan jumlah elemen array: ");
    scanf("%d", &n);
    
    int data[n]; // Variable Length Array (VLA)
    
    // Input elemen array
    printf("Masukkan %d elemen:\n", n);
    for (i = 0; i < n; i++) {
        printf("Elemen ke-%d: ", i + 1);
        scanf("%d", &data[i]);
    }
    
    // Menampilkan array
    printf("\n=== ARRAY YANG DIMASUKKAN ===\n");
    for (i = 0; i < n; i++) {
        printf("%d ", data[i]);
    }
    
    // Mencari nilai maksimum dan minimum
    int max = data[0], min = data[0];
    for (i = 1; i < n; i++) { if (data[i] > max) max = data[i];
        if (data[i] < min) min = data[i];
    }
    
    printf("\n\nNilai maksimum: %d\n", max);
    printf("Nilai minimum: %d\n", min);
    
    return 0;
}

Output (contoh input):

Masukkan jumlah elemen array: 4
Masukkan 4 elemen:
Elemen ke-1: 25
Elemen ke-2: 10
Elemen ke-3: 35
Elemen ke-4: 15

=== ARRAY YANG DIMASUKKAN ===
25 10 35 15 

Nilai maksimum: 35
Nilai minimum: 10

Contoh Program Array C #3: Pencarian dalam Array

Untuk mempelajari algoritma pencarian yang lebih advanced, Anda bisa mengikuti Algoritma Pencarian dan Sorting di Kelas Programmer.

🔍 Program Pencarian Linear

#include <stdio.h>

int main() {
    int data[] = {15, 23, 8, 42, 17, 31, 9, 25};
    int ukuran = sizeof(data) / sizeof(data[0]);
    int cari, i, ditemukan = 0, posisi = -1;
    
    // Menampilkan array
    printf("Array: ");
    for (i = 0; i < ukuran; i++) {
        printf("%d ", data[i]);
    }
    
    // Input nilai yang dicari
    printf("\n\nMasukkan nilai yang dicari: ");
    scanf("%d", &cari);
    
    // Pencarian linear
    for (i = 0; i < ukuran; i++) {
        if (data[i] == cari) {
            ditemukan = 1;
            posisi = i;
            break; // Keluar dari loop jika ditemukan
        }
    }
    
    // Menampilkan hasil
    if (ditemukan) {
        printf("Nilai %d ditemukan pada indeks ke-%d\n", cari, posisi);
        printf("Posisi dalam array: %d\n", posisi + 1);
    } else {
        printf("Nilai %d tidak ditemukan dalam array\n", cari);
    }
    
    // Menghitung berapa kali nilai muncul
    int jumlah = 0;
    for (i = 0; i < ukuran; i++) { if (data[i] == cari) { jumlah++; } } if (jumlah > 0) {
        printf("Nilai %d muncul sebanyak %d kali\n", cari, jumlah);
    }
    
    return 0;
}

Output (contoh input 23):

Array: 15 23 8 42 17 31 9 25 

Masukkan nilai yang dicari: 23
Nilai 23 ditemukan pada indeks ke-1
Posisi dalam array: 2
Nilai 23 muncul sebanyak 1 kali

Contoh Program Array C #4: Sorting Array (Bubble Sort)

🔄 Program Sorting Bubble Sort

#include <stdio.h>

void bubbleSort(int arr[], int n) {
    int i, j, temp;
    
    for (i = 0; i < n - 1; i++) {
        for (j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) {
                // Tukar elemen
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

void tampilkanArray(int arr[], int n) {
    int i;
    for (i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int main() {
    int data[] = {64, 34, 25, 12, 22, 11, 90};
    int n = sizeof(data) / sizeof(data[0]);
    
    printf("Array sebelum sorting:\n");
    tampilkanArray(data, n);
    
    // Melakukan bubble sort
    bubbleSort(data, n);
    
    printf("Array setelah sorting:\n");
    tampilkanArray(data, n);
    
    // Mencari median
    float median;
    if (n % 2 == 0) {
        median = (data[n/2 - 1] + data[n/2]) / 2.0;
    } else {
        median = data[n/2];
    }
    
    printf("Median: %.1f\n", median);
    
    return 0;
}

Output:

Array sebelum sorting:
64 34 25 12 22 11 90 
Array setelah sorting:
11 12 22 25 34 64 90 
Median: 25.0

Contoh Program Array C #5: Array Dua Dimensi (Matrix)

Array dua dimensi atau matrix sangat berguna untuk menyimpan data dalam bentuk tabel:

📋 Program Matrix 3×3

#include <stdio.h>

int main() {
    int matrix[3][3];
    int i, j;
    int jumlah_baris[3] = {0};
    int jumlah_kolom[3] = {0};
    int total = 0;
    
    // Input elemen matrix
    printf("Masukkan elemen matrix 3x3:\n");
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 3; j++) {
            printf("Matrix[%d][%d]: ", i, j);
            scanf("%d", &matrix[i][j]);
        }
    }
    
    // Menampilkan matrix
    printf("\n=== MATRIX 3x3 ===\n");
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 3; j++) {
            printf("%4d ", matrix[i][j]);
        }
        printf("\n");
    }
    
    // Menghitung jumlah per baris dan kolom
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 3; j++) {
            jumlah_baris[i] += matrix[i][j];
            jumlah_kolom[j] += matrix[i][j];
            total += matrix[i][j];
        }
    }
    
    // Menampilkan hasil perhitungan
    printf("\n=== ANALISIS MATRIX ===\n");
    for (i = 0; i < 3; i++) {
        printf("Jumlah baris %d: %d\n", i + 1, jumlah_baris[i]);
    }
    
    printf("\n");
    for (j = 0; j < 3; j++) {
        printf("Jumlah kolom %d: %d\n", j + 1, jumlah_kolom[j]);
    }
    
    printf("\nTotal semua elemen: %d\n", total);
    printf("Rata-rata: %.2f\n", (float)total / 9);
    
    return 0;
}

Contoh Program Array C #6: Manipulasi String (Array Karakter)

String dalam C adalah array karakter yang diakhiri dengan null terminator (\0):

🔤 Program Manipulasi String

#include <stdio.h>
#include <string.h>

int hitungKarakter(char str[], char c) {
    int count = 0, i;
    for (i = 0; str[i] != '\0'; i++) {
        if (str[i] == c) count++;
    }
    return count;
}

void balikString(char str[]) {
    int len = strlen(str);
    int i;
    char temp;
    
    for (i = 0; i < len / 2; i++) { temp = str[i]; str[i] = str[len - 1 - i]; str[len - 1 - i] = temp; } } int main() { char kalimat[100]; char cari; int i, vokal = 0, konsonan = 0; printf("Masukkan kalimat: "); fgets(kalimat, sizeof(kalimat), stdin); // Menghilangkan newline dari fgets kalimat[strcspn(kalimat, "\n")] = 0; printf("Kalimat asli: %s\n", kalimat); printf("Panjang string: %d karakter\n", (int)strlen(kalimat)); // Menghitung vokal dan konsonan for (i = 0; kalimat[i] != '\0'; i++) { char c = kalimat[i]; if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
            if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' ||
                c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U') {
                vokal++;
            } else {
                konsonan++;
            }
        }
    }
    
    printf("Jumlah vokal: %d\n", vokal);
    printf("Jumlah konsonan: %d\n", konsonan);
    
    // Mencari karakter tertentu
    printf("Masukkan karakter yang dicari: ");
    scanf(" %c", &cari);
    
    int jumlah = hitungKarakter(kalimat, cari);
    printf("Karakter '%c' muncul %d kali\n", cari, jumlah);
    
    // Membalik string
    balikString(kalimat);
    printf("String terbalik: %s\n", kalimat);
    
    return 0;
}

Contoh Program Array C #7: Array Struktur

Untuk memahami konsep struktur data yang lebih kompleks, silakan pelajari Struktur Data Advanced di Kelas Programmer.

👥 Program Array Struktur Mahasiswa

#include <stdio.h>
#include <string.h>

struct Mahasiswa {
    char nama[50];
    char nim[15];
    float ipk;
    int semester;
};

void tampilkanMahasiswa(struct Mahasiswa mhs[], int n) {
    int i;
    printf("\n=== DATA MAHASISWA ===\n");
    printf("%-20s %-12s %-6s %-8s\n", "Nama", "NIM", "IPK", "Semester");
    printf("----------------------------------------------------\n");
    
    for (i = 0; i < n; i++) {
        printf("%-20s %-12s %-6.2f %-8d\n", 
               mhs[i].nama, mhs[i].nim, mhs[i].ipk, mhs[i].semester);
    }
}

float hitungRataIPK(struct Mahasiswa mhs[], int n) {
    float total = 0;
    int i;
    
    for (i = 0; i < n; i++) {
        total += mhs[i].ipk;
    }
    
    return total / n;
}

int cariMahasiswaTerbaik(struct Mahasiswa mhs[], int n) {
    int terbaik = 0;
    int i;
    
    for (i = 1; i < n; i++) { if (mhs[i].ipk > mhs[terbaik].ipk) {
            terbaik = i;
        }
    }
    
    return terbaik;
}

int main() {
    struct Mahasiswa mahasiswa[3];
    int i;
    
    // Input data mahasiswa
    printf("=== INPUT DATA MAHASISWA ===\n");
    for (i = 0; i < 3; i++) {
        printf("\nMahasiswa ke-%d:\n", i + 1);
        
        printf("Nama: ");
        scanf("%s", mahasiswa[i].nama);
        
        printf("NIM: ");
        scanf("%s", mahasiswa[i].nim);
        
        printf("IPK: ");
        scanf("%f", &mahasiswa[i].ipk);
        
        printf("Semester: ");
        scanf("%d", &mahasiswa[i].semester);
    }
    
    // Menampilkan data
    tampilkanMahasiswa(mahasiswa, 3);
    
    // Analisis data
    float rataIPK = hitungRataIPK(mahasiswa, 3);
    int indexTerbaik = cariMahasiswaTerbaik(mahasiswa, 3);
    
    printf("\n=== ANALISIS ===\n");
    printf("Rata-rata IPK: %.2f\n", rataIPK);
    printf("Mahasiswa terbaik: %s (IPK: %.2f)\n", 
           mahasiswa[indexTerbaik].nama, mahasiswa[indexTerbaik].ipk);
    
    return 0;
}

Contoh Program Array C #8: Histogram dan Analisis Data

Untuk mempelajari teknik analisis data yang lebih mendalam, kunjungi Data Analysis Programming di Kelas Programmer.

📊 Program Histogram Data

#include <stdio.h>

int main() {
    int data[] = {85, 92, 78, 96, 87, 91, 83, 88, 94, 79, 
                  90, 86, 82, 95, 89, 77, 93, 84, 81, 97};
    int n = sizeof(data) / sizeof(data[0]);
    int histogram[11] = {0}; // 70-79, 80-89, 90-99
    int i, j;
    
    printf("=== DATA NILAI MAHASISWA ===\n");
    printf("Jumlah data: %d\n", n);
    
    // Menampilkan data
    printf("Data: ");
    for (i = 0; i < n; i++) {
        printf("%d ", data[i]);
        if ((i + 1) % 10 == 0) printf("\n      ");
    }
    printf("\n");
    
    // Membuat histogram berdasarkan rentang nilai
    for (i = 0; i < n; i++) { if (data[i] >= 70 && data[i] <= 79) { histogram[0]++; } else if (data[i] >= 80 && data[i] <= 89) { histogram[1]++; } else if (data[i] >= 90 && data[i] <= 99) {
            histogram[2]++;
        }
    }
    
    // Menampilkan histogram
    printf("\n=== HISTOGRAM NILAI ===\n");
    printf("70-79: ");
    for (j = 0; j < histogram[0]; j++) printf("*");
    printf(" (%d)\n", histogram[0]);
    
    printf("80-89: ");
    for (j = 0; j < histogram[1]; j++) printf("*");
    printf(" (%d)\n", histogram[1]);
    
    printf("90-99: ");
    for (j = 0; j < histogram[2]; j++) printf("*");
    printf(" (%d)\n", histogram[2]);
    
    // Analisis statistik
    int sum = 0, max = data[0], min = data[0];
    for (i = 0; i < n; i++) { sum += data[i]; if (data[i] > max) max = data[i];
        if (data[i] < min) min = data[i];
    }
    
    float rata = (float)sum / n;
    
    printf("\n=== ANALISIS STATISTIK ===\n");
    printf("Rata-rata: %.2f\n", rata);
    printf("Nilai tertinggi: %d\n", max);
    printf("Nilai terendah: %d\n", min);
    printf("Range: %d\n", max - min);
    
    // Menentukan grade distribusi
    int lulus = 0;
    for (i = 0; i < n; i++) { if (data[i] >= 75) lulus++;
    }
    
    printf("\n=== HASIL EVALUASI ===\n");
    printf("Mahasiswa lulus (≥75): %d dari %d (%.1f%%)\n", 
           lulus, n, (float)lulus / n * 100);
    printf("Mahasiswa tidak lulus: %d dari %d (%.1f%%)\n", 
           n - lulus, n, (float)(n - lulus) / n * 100);
    
    return 0;
}

Tips dan Best Practices Array dalam C

🎯 Best Practices Array:
• Selalu inisialisasi array sebelum digunakan
• Periksa batas array untuk menghindari buffer overflow
• Gunakan konstanta untuk ukuran array yang tetap
• Bebaskan memori dinamis dengan free() setelah selesai
• Gunakan fungsi untuk operasi array yang kompleks
• Dokumentasikan tujuan dan struktur array dalam komentar

Tabel Perbandingan Jenis Array

Jenis Array Deklarasi Keunggulan Kekurangan
Static Array int arr[10]; Cepat, sederhana Ukuran tetap
Dynamic Array int *arr = malloc(n*sizeof(int)); Ukuran fleksibel Perlu manajemen memori
VLA (Variable Length) int arr[n]; Ukuran runtime Terbatas pada fungsi
Multidimensional int arr[3][4]; Struktur data kompleks Konsumsi memori besar

Common Errors dan Debugging

⚠️ Error Umum dalam Array:
Array Index Out of Bounds: Mengakses indeks di luar batas array
Uninitialized Array: Menggunakan array tanpa inisialisasi
Memory Leak: Tidak membebaskan memori dinamis
Buffer Overflow: Menulis data melebihi kapasitas array
Wrong Size Calculation: Salah menghitung ukuran array

Contoh Debugging Array

// ❌ SALAH - Array index out of bounds
int arr[5];
for (i = 0; i <= 5; i++) { // Error: i=5 keluar batas
    arr[i] = i;
}

// ✅ BENAR - Periksa batas array
int arr[5];
for (i = 0; i < 5; i++) { // Benar: i < 5
    arr[i] = i;
}

// ❌ SALAH - Memory leak
int *ptr = malloc(10 * sizeof(int));
// ... menggunakan ptr ...
// Lupa free(ptr);

// ✅ BENAR - Proper memory management
int *ptr = malloc(10 * sizeof(int));
if (ptr != NULL) {
    // ... menggunakan ptr ...
    free(ptr);
    ptr = NULL;
}

Latihan dan Exercise

💪 Latihan Mandiri
Cobalah buat program array C untuk:
1. Mencari elemen terbesar kedua dalam array
2. Menggabungkan dua array yang sudah terurut
3. Mencari pasangan elemen yang jumlahnya sama dengan target
4. Merotasi array ke kiri atau kanan sebanyak n posisi
5. Mencari subarray dengan jumlah maksimum
6. Menghapus duplikat dari array
7. Implementasi stack menggunakan array
8. Mencari intersection dari dua array

Contoh Solusi: Mencari Elemen Terbesar Kedua

#include <stdio.h>
#include <limits.h>

int cariTerbesarKedua(int arr[], int n) {
    int terbesar = INT_MIN, terbesarKedua = INT_MIN;
    int i;
    
    for (i = 0; i < n; i++) { if (arr[i] > terbesar) {
            terbesarKedua = terbesar;
            terbesar = arr[i];
        } else if (arr[i] > terbesarKedua && arr[i] != terbesar) {
            terbesarKedua = arr[i];
        }
    }
    
    return terbesarKedua;
}

int main() {
    int data[] = {12, 35, 1, 10, 34, 1};
    int n = sizeof(data) / sizeof(data[0]);
    
    int hasil = cariTerbesarKedua(data, n);
    
    if (hasil != INT_MIN) {
        printf("Elemen terbesar kedua: %d\n", hasil);
    } else {
        printf("Tidak ada elemen terbesar kedua\n");
    }
    
    return 0;
}

❓ Frequently Asked Questions (FAQ)

Q: Apa perbedaan antara array dan pointer dalam bahasa C?

A: Array adalah kumpulan elemen dengan tipe sama yang disimpan berurutan, sedangkan pointer adalah variabel yang menyimpan alamat memori. Array name adalah pointer konstan ke elemen pertama, namun pointer dapat diubah untuk menunjuk ke alamat lain.

Q: Bagaimana cara mengetahui ukuran array dalam C?

A: Gunakan sizeof(array)/sizeof(array[0]) untuk array statis. Untuk array dinamis, Anda harus menyimpan ukurannya dalam variabel terpisah karena sizeof() akan mengembalikan ukuran pointer, bukan array.

Q: Mengapa indeks array dimulai dari 0 bukan 1?

A: Indeks array dimulai dari 0 karena indeks merepresentasikan offset dari alamat base array. Elemen pertama berada di alamat base + 0, elemen kedua di base + 1*sizeof(type), dan seterusnya.

Q: Apa itu buffer overflow dan bagaimana mencegahnya?

A: Buffer overflow terjadi ketika program menulis data melebihi batas array. Pencegahan: sel

Leave a Reply

Your email address will not be published. Required fields are marked *