娓娓道来c指针 (0)c语言的梦魇:c指针

时间:2022-11-10 11:27:49

(0)c语言的梦魇:c指针

c语言中有一个重点:c指针。它也是一个难点。当然,这是一句废话:重点往往也是难点。在c标准中,对指针的定义是这种:

  1. 指针的类型是derived from其他类型,也就是说指针的类型是由它指向的类型决定的;
  2. 指针是一种reference类型,即引用类型;

c指针似乎非常难理解,以至于有人指出:掌握了c指针,就掌握了c语言的精髓。本系列就来聊聊c指针,要想弄懂c指针。光就指针本身进行理解,还不够。

由于指针的本质就一句话:指针就是地址。这句话大多数学过c语言的人都明白,但对非常多使用指针的场景仍然是不知所措,就像梦魇一样。必须指出:指针之所以难理解,很多其它地在于c的语法。能够明白指出c的语法非常多时候是不太自然的,混乱的。毕竟c语言是人设计的,有所缺陷或者说设计不佳,在所难免。

这并非否定c语言的魅力和能力。相反,c语言的确是强大的,在底层的操作上或许仅次于汇编。但要想发挥出c语言的强大能力,前提是必须对语言本身有深刻的理解。从c语言的发展史看,c语言起源于B语言,接着演化为New B,简称NB,再就是今天的c语言。c语言就是一门介于NA和NC之间的语言!

本系列集中探讨下面问题:

  1. 指针和数组为何如此暧昧?
  2. c语言中变量的可见域、生存期
  3. 变量的左值、右值
  4. 什么是静态函数?
  5. c语言中的复杂申明怎样解析?
  6. 数组的数组是什么意思?
  7. const的使用
  8. typedef是用来干什么的?
  9. 结构体的使用
  10. ……

个人能力有限,估计本系列会非常艰难。但能往前走一步,就绝不走半步。本系列以c指针为中心,加以c的语法解析。欢迎各路高手批评指正。

David

2014年7月23日

文件夹

  1. 指针就是地址
  2. 内存分配
  3. 指针和数组
  4. 解析c的声明语句
  5. c数组本质
  6. const的使用
  7. 指针运算