C语言指针和数组概述

几乎每次讲课讲到指针和数组时,我总会反复不停的问学生:到底什么是指针?什么是数组?他们之间到底是什么样的关系。从几乎没人能回答明白到几乎都能回答明白,需要经历一段“惨绝人寰”的痛。

指针是C/C++的精华,如果未能很好地掌握指针,那C/C++也基本等于没学。可惜,对于刚毕业的计算机系的学生,几乎没有人真正完全掌握了指针和数组、以及内存管理,甚至有的学生告诉我说:他们老师认为指针与数组太难,工作又少用,所以没有讲解。对于这样的学校与老师,我是彻底的无语。我没有资格去谴责或是鄙视谁,只是窃以为,这个老师肯怕自己都未掌握指针。

大学里很多老师并未真正写过多少代码,不掌握指针的老师肯定存在,这样的老师教出来的学生如何能找到工作?而目前市面上的书对指针和数组的区别也是几乎避而不谈,这就更加加深了学生掌握的难度。我平时上课总是非常细致而又小心的向学生讲解这些知识,生怕一不小心就讲错或是误导了学生。还好,至少到目前为止,我教过的学生几乎都能掌握指针和数组及内存管理的要点,当然要到能运用自如的程度还远远不够,这需要大量的写代码才能达到。另外需要说明的是,讲课时为了让学生深刻的掌握这些知识,我举了很多各式各样的例子来帮助学生理解。

所以,我也希望读者朋友能好好体味这些例子。三个问题:
A)
什么是指针?
B)
什么是数组?
C)
数组和指针之间有什么样的关系?