c语言笔记-概述

老生常谈 ,介绍一下本人学习c语言 部分的资料

1. C语言概述

1.1C语言的发展过程

  1. C语言是在 70 年代初问世的。一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。同时由B.W.KernighanD.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书。通常简称为《K&R》,也有人称之为《K&R》标准。但是,在《K&R》中并没有定义一个完整的标准C 语言,后来由美国国家标准协会(American National Standards Institute)在此基础上制定了一个C 语言标准,于一九八三年发表。通常称之为ANSI C。
  2. C语言特点

C语言32个关键字

  关键字就是已被C语言本身使用,不能作其它用途使用的字。例如关键字不能用作变量名、函数名等

  由ANSI标准定义的C语言关键字共32个:

  auto double int struct break else long switch

  case enum register typedef char extern return union

  const float short unsigned continue for signed void

  default goto sizeof volatile do if while static

  根据关键字的作用,可以将关键字分为数据类型关键字和流程控制关键字两大类。

  1 数据类型关键字

  A.基本数据类型(5个)

  void :声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果

  char :字符型类型数据,属于整型数据的一种

  int :整型数据,通常为编译器指定的机器字长

  float :单精度浮点型数据,属于浮点数据的一种

  double :双精度浮点型数据,属于浮点数据的一种

  B .类型修饰关键字(4个)

  short :修饰int,短整型数据,可省略被修饰的int。

  long :修饰int,长整形数据,可省略被修饰的int。

  signed :修饰整型数据,有符号数据类型

  unsigned :修饰整型数据,无符号数据类型

  C .复杂类型关键字(5个)

  struct :结构体声明

  union :共用体声明

  enum :枚举声明

  typedef :声明类型别名

  sizeof :得到特定类型或特定类型变量的大小

  D .存储级别关键字(6个)

  auto :指定为自动变量,由编译器自动分配及释放。通常在栈上分配

  static :指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部

  register :指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数

  extern :指定对应变量为外部变量,即标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。

  const :与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)

  volatile :与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值

  2 流程控制关键字

  A .跳转结构(4个)

  return :用在函数体中,返回特定值(或者是void值,即不返回值)

  continue :结束当前循环,开始下一轮循环

  break :跳出当前循环或switch结构

  goto :无条件跳转语句

  B .分支结构(5个)

  if :条件语句,后面不需要放分号

  else :条件语句否定分支(与if连用)

  switch :开关语句(多重分支语句)

  case :开关语句中的分支标记

  default :开关语句中的“其他”分支,可选。

  C .循环结构(3个)

  for:for 循环结构,for(1;2;3)4;的执行顺序为1->2->4->3->2...循环,其中2为循环条件。在整个for循环过 程中,表达式1只计算一次,表达式2和表达式3则可能计算多次,也可能一次也不计算。循环体可能多次执行,也可能一次都不执行。

  do :do循环结构,do 1 while(2); 的执行顺序是1->2->1...循环,2为循环条件

  while :while循环结构,while(1) 2; 的执行顺序是1->2->1...循环,1为循环条件

  以上循环语句,当循环条件表达式为真则继续循环,为假则跳出循环。

2·运算符丰富。共有34种。C把括号、赋值、逗号等都作为运算符处理。从而使C的运算类型极为丰富,可以实现其他高级语言难以实现的运算。

3·数据结构类型丰富。

4·具有结构化的控制语句。

5·语法限制不太严格,程序设计自由度大。

6·C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此有人把它称为中级语言。

7·生成目标代码质量高,程序执行效率高。

8·与汇编语言相比,用C语言写的程序可移植性好。

但是,C语言对程序员要求也高,程序员用C写程序会感到限制少、灵活性大,功能强,但较其他高级语言在学习上要困难一些。

1.4面对过程和面向对象的定义

面向过程:“面向过程”是一种以事件为中心的编程思想。就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

面向对象:“面向对象”(Object Oriented,简称OO)是一种以事物为中心的编程思想。