Meneruskan Array ke Fungsi
Termasuk bagian Logika dan Alur dalam perjalanan C di Coddy. Pelajaran 29 dari 63.
Saat kamu meneruskan array ke fungsi di C, sesuatu yang menarik terjadi di balik layar. Array itu sendiri sebenarnya tidak disalin ke fungsi. Sebaliknya, yang diteruskan adalah pointer ke elemen pertama dari array.
Artinya, saat kamu menulis parameter fungsi seperti int arr[] atau int *arr, keduanya setara, karena keduanya merepresentasikan pointer ke elemen pertama array. Fungsi menerima alamat memori tempat array dimulai, sehingga fungsi memiliki akses langsung ke data array asli.
void printArray(int arr[], int size) {
// arr sebenarnya adalah pointer ke elemen pertama
// Fungsi ini dapat mengakses dan mengubah array asli
}Karena fungsi bekerja dengan lokasi memori array asli, bukan salinannya, setiap perubahan yang dibuat di dalam fungsi akan memengaruhi array asli. Ini berbeda dari mengirimkan variabel satu per satu, yang akan membuat salinan.
Kamu juga akan melihat bahwa kamu perlu memberikan ukuran array sebagai parameter terpisah karena fungsi tidak dapat menentukan panjang array hanya dari pointer.
Tantangan
MudahTulis program C yang menunjukkan cara meneruskan array ke fungsi dengan membuat fungsi yang memproses data suhu. Programmu harus:
- Membuat fungsi bernama
analyzeTemperaturesyang menerima array integer dan ukurannya sebagai parameter - Di dalam fungsi
analyzeTemperatures, menghitung dan mencetak suhu rata-rata dengan tepat 1 angka desimal dalam format:Average temperature: [value] - Di dalam fungsi
analyzeTemperatures, mencari dan mencetak suhu tertinggi dalam format:Highest temperature: [value] - Di dalam fungsi
analyzeTemperatures, menghitung jumlah suhu yang lebih dari 25 derajat dan mencetak jumlahnya dalam format:Days above 25 degrees: [count] - Di dalam fungsi
main, membaca integernyang menunjukkan jumlah pembacaan suhu - Membaca
nnilai suhu dan menyimpannya dalam array integer - Memanggil fungsi
analyzeTemperatures, dengan meneruskan array dan ukurannya
Programmu harus memproses data suhu dan menampilkan hasil analisis. Misalnya, jika inputnya adalah:
5
20 28 15 32 26Outputmu harus:
Average temperature: 24.2
Highest temperature: 32
Days above 25 degrees: 3Tantangan ini menunjukkan cara array diteruskan ke fungsi sebagai pointer ke elemen pertamanya, sehingga fungsi dapat mengakses dan memproses semua elemen dari array asli tanpa membuat salinan.
Coba sendiri
#include <stdio.h>
// TODO: Buat fungsi analyzeTemperatures di sini
int main() {
// Baca jumlah pembacaan suhu
int n;
scanf("%d", &n);
// Deklarasikan array untuk menyimpan suhu
int temperatures[n];
// Baca nilai suhu
for (int i = 0; i < n; i++) {
scanf("%d", &temperatures[i]);
}
// TODO: Panggil fungsi analyzeTemperatures di sini
return 0;
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Dasar-Dasar Pointer
Apa Itu Pointer?Mendeklarasikan PointerOperator Address-Of (&)Operator Dereference (*)Pointer NULLRekap: Dasar-Dasar Pointer4Proyek: Utilitas Teks Sederhana
Gambaran Umum ProyekMenghitung Karakter2Pointer dan array
Nama array sebagai pointerElemen array dan pointerAritmetika pointerMembandingkan pointerRangkuman: Menelusuri array dengan pointer5Pointer dan Fungsi
Penerusan dengan NilaiMeneruskan Pointer ke FungsiMengubah Variabel melalui PointerContoh Klasik: SwapMeneruskan Array ke FungsiRingkasan: Argumen Pointer Fungsi8Struct dan Pointer
Pointer ke StructOperator Panah (->)Mengirim Struct berdasarkan NilaiMengirim Pointer StructAlokasi Dinamis StructUlasan: Memodifikasi Struct dengan Pointer11Tantangan Rangkuman Akhir
Rangkuman: Penggabungan string DinamisRangkuman: array berisi structRangkuman: Penghitung Frekuensi Kata3Array char dan String
String sebagai array charPenanda akhir nullInput String dengan scanfMenggunakan strlen()Menggunakan strcpy()Menggunakan strcat()Menggunakan strcmp()Ulasan: Fungsi String DasarLatihan sendiri: Compiler C online