Nama array sebagai pointer
Termasuk bagian Logika dan Alur dalam perjalanan C di Coddy. Pelajaran 7 dari 63.
array dan pointer di C memiliki hubungan khusus yang sangat penting untuk memahami cara C bekerja dengan data di memori. Saat kamu mendeklarasikan array, nama array itu sendiri bertindak sebagai pointer konstan ke elemen pertama array.
Ini berarti, saat kamu memiliki array seperti int numbers[5];, nama numbers pada dasarnya adalah pointer yang selalu menunjuk ke numbers[0]. Kamu bisa menganggap nama array sebagai pointer bawaan yang tidak perlu kamu deklarasikan secara terpisah.
int numbers[5] = {10, 20, 30, 40, 50};
// 'numbers' menunjuk ke elemen pertama
// numbers == &numbers[0] // Keduanya setara!Kesetaraan ini sangat penting: numbers dan &numbers[0] sama-sama memberikan alamat memori yang persis sama. Nama array hanyalah cara yang lebih praktis untuk merujuk alamat elemen pertama tanpa harus menggunakan operator alamat.
Memahami hubungan ini membuka peluang untuk menggunakan teknik pointer dengan array, yang dapat membuat kodemu lebih fleksibel dan efisien. Perbedaan utamanya adalah, tidak seperti pointer biasa, nama array merupakan pointer konstan, kamu tidak dapat mengubah objek yang ditunjuknya.
Tantangan
MudahTulis program C yang menunjukkan kesetaraan antara nama array dan pointer ke elemen pertamanya. Programmu harus:
- Mendeklarasikan array integer bernama
numbersdengan 4 elemen dan menginisialisasinya dengan nilai {10, 20, 30, 40} - Mendeklarasikan pointer ke integer bernama
ptr - Menetapkan nama array
numberske pointerptr - Mencetak alamat yang tersimpan di
numbersmenggunakanprintfdengan penentu format%p - Mencetak alamat elemen pertama
&numbers[0]menggunakanprintfdengan penentu format%p - Mencetak alamat yang tersimpan di
ptrmenggunakanprintfdengan penentu format%p - Mencetak nilai elemen pertama menggunakan nama array:
*numbers - Mencetak nilai elemen pertama menggunakan pointer:
*ptr
Outputmu harus menampilkan hasil dalam format berikut:
Array name address: [address]
First element address: [address]
Pointer address: [address]
Value via array name: 10
Value via pointer: 10Tantangan ini menunjukkan bahwa nama array bertindak sebagai pointer konstan ke elemen pertama, dan bahwa numbers, &numbers[0], dan ptr semuanya berisi alamat memori yang sama saat ptr diberi nama array.
Coba sendiri
#include <stdio.h>
int main() {
// TODO: Tulis kodemu di sini
// 1. Deklarasikan dan inisialisasi array 'numbers' dengan {10, 20, 30, 40}
// 2. Deklarasikan pointer ke bilangan bulat bernama 'ptr'
// 3. Tetapkan nama array ke pointer
// 4. Cetak semua alamat dan nilai yang diminta
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