举个排队的例子,比如一个门口有很多人依次排队,大家可以从排队的第一个人开始,依次给每个人一个唯一的号码,大家通过号码,就能快速找到对应的排队的人。
相似的,当大家通过指针得到内存地址后,再通过指针类型(char、int、long等),可以提取从这个内存位置开始的指定bit的二进制数据,这个数据可以被程序执行来使用。
使用指针的好处是“快速”和“灵活”,早期电脑计算能力比较弱,指针操作相对速度要更快,但在今天的电脑运行速度情况下,快速的优势已经不再明显。
但从灵活性方面,指针是c语言最有特色的功能之一,无论从字符串的处理,函数的调用和的返回等都非常灵活,也简化了程序开发。
不过灵活也带来了管理的难度,指针操作如果不注意的话,非常容易造成内存溢出等错误导致程序崩溃(比如,对一个包含5个字符的字符串,如果程序试图从指针地址加5获取第六个字符),也因为如此,c语言的子孙或后继们,除了c++和go支持指针,c#采用了非安全代码的折中方案外,如java,pyrhon等,大多都不再提供指针的功能,但也限制语言的能力。