首页 > 代码库 > c基础知识复习

c基础知识复习

C的发展历程

  C原本是为了开发UNIX操作系统而设计的语言;如此说,应该C比UNIX更早问世,而事实并非如此,最早的UNIX是由汇编写的;

 C语言本来是美国人开发的,解读C的声明,最好还是用英语来读;

  解读C声明的步骤:

    1、首先着眼于标识符(变量名或者函数名)

    2、从距离标识符最近的地方开始,依照优先顺序解释派生类型(指针、数组和函数)。优先顺序说明如下:

      a、用于整理声明内容的括号;

      b、用于表示数组的[ ],用于表示函数的( )

      c、用于表示指针的*

    3、解释完成派生类型,使用 “of”、 “to”、“returning”将它们链接起来;

    4、最后,追加数据类型修饰符(在左边, int、double等)

 int  (*func_p)(double);

   1、着眼于标识符。即:func_p  /*/  func_p   is

   2、因为存在括号,着眼于括号*:  /*/func_p is  pointer  to 

   3、着眼于用于整理声明内容的括号: /*/func_p  is pointer to function(参数是double)  returning

   4、最后、解释数据类型修饰符int : /*/  func_p  is pointer  to function (参数是double) returning int

  翻译成中文:func_p 是指向返回值为int 的函数的指针;

           

          C语言的声明不能从左往右按顺序解读;而是左右来回地解读;

  int  (*func_table[10])(int  a);

  func_table  is  array(元素个数为10)   of  pointer  to function(参数int类型)   returning  int

对指针进行加法运算,指针只前进 指针所指向类型的大小的距离,这一点具有非常重要的意义;

“指向数组的指针”,

  错误理解:数组名后不加[ ] ,不就是“指向数组的指针”吗?

的确,在表达式中,数组可以被解读成指针,但是, 这不是“指向数组的指针”, 而是“指向数组初始元素的指针”

(之后就是涉及一个+1指针的跨度问题,很经典的问题)