Memory-as-a-Grid Diagram
Biasanya yang saya lakukan adalah merepresentasikan memori sebagai "kisi", sehingga saya dapat membuat alamat, menyorot ruang memori yang berbeda dan menulis dalam nilai sel (atau bahkan lebih jauh, representasi binernya) dan menghubungkan pointer dalam memori dengan nilai yang mereka menunjuk pada. (Dan kemudian masih menyebutkan bahwa itu penyederhanaan).
Biasanya ini adalah momen "ohhhh" bagi sebagian besar siswa saya.
Simbol Juggling
Kemudian ketika mereka berhenti membuat mereka lupa bagaimana cara menggunakan & dan *, itu sangat sederhana: sajikan dengan cara yang sama seperti ketika mereka melakukan perhitungan matematika atau fisika. Jika Anda membagi jarak dalam km dengan waktu dalam jam, Anda mendapatkan kecepatan dalam km / jam. Apa yang perlu keluar. Sederhana.
printf ke Penyelamatan
Melakukan hanya beberapa contoh dasar yang secara visual mewakili apa yang Anda jelaskan dengan ini akan menghibur mereka dalam apa yang mereka pikir mereka pahami, atau memberi mereka kesempatan untuk mengatakan "ah, saya tidak mengerti yang ini".
Menjadi Luas
Tutup petunjuk untuk tipe sederhana dan pastikan mereka memahami perbedaan antara pengalamatan dan ukuran tipe data, lalu susun, lalu susun, dan berbagai level.
Kemudian mulai aritmatika pointer.
Tambahan: Rekursi
Saya biasanya menjelaskan rekursi dengan cara yang sama, menggunakan representasi visual. Mintalah mereka mencetak alfabet menggunakan fungsi pra-dibuat yang menulis satu karakter, dan kemudian minta mereka untuk mencetaknya dalam urutan terbalik dengan hanya mengubah dua baris.
Biasanya ada "apa ...?" saat, dan ketika Anda menambahkan hanya parameter lain ke printf Anda untuk mencetak nilai numerik dan indentasi langkah-langkahnya, itu menjadi desahan lega.
Alternatif: Model Play-Doh dan Piala Air
Saya sebenarnya memiliki beberapa rekan kerja di sebuah universitas yang menunjukkan kepada siswa sebuah video yang menjelaskan petunjuk dan akses memori menggunakan pasta play-doh. Itu sangat pintar dan dilakukan dengan baik, meskipun saya sendiri tidak pernah benar-benar menggunakan teknik itu, kecuali untuk pelajar yang sangat muda yang tertarik dalam memahami pemrograman (tetapi biasanya mereka yang saya tidak akan mengarahkan mereka ke bahasa yang menggunakan pointer terlalu dini). Pada dasarnya menggunakan bola-bola play-doh kecil yang dapat Anda pasang ke bola-bola play-doh lain yang lebih besar yang mewakili ruang memori, dan bahwa Anda dapat menggabungkan bersama-sama untuk menautkan keduanya (seperti dalam struktur data yang ditautkan) atau bergabung bersama (seperti dalam berdekatan) ruang memori). Menggunakan warna yang berbeda untuk ruang memori yang ditunjuk dan pointer membantu juga. Tapi saya masih berpikir hal Memory-as-a-Grid bekerja lebih baik, karena Anda dapat dengan jelas menunjukkan bahwa menunjuk sebenarnya masalah "pengalamatan", seperti pada "peta / kotak". Sedangkan mode Play-doh masih membingungkan mereka untuk berpikir bahwa hal-hal benar-benar "saling menyentuh" dalam memori.
Hal Piala Air digunakan langsung oleh seorang rekan juga, tapi saya tidak tahu apakah dia datang dengan itu. Itu adalah pendekatan yang menarik, tetapi saya perhatikan banyak siswa yang bingung dengan penjelasannya. Sesuatu yang mirip dengan teknik Cangkir Kopi DevSolo . Tapi saya pikir itu sebenarnya yang menyesatkan ketika Anda membuat siswa bingung wadah, struktur data, petunjuk dan array. Mungkin ini pendekatan yang menarik untuk menjelaskan array pada awalnya saya anggap, tapi saya tidak akan bertahan terlalu lama.