C语言学习 一、概述 二、数据类型及其运算 三、选择结构及其应用 四、循环结构及其应用 五、数组 六、函数 七、预处理命令 八、指针 九、结构体与共用体

1.C语言特定

(1)C语言简洁、紧凑,使用方便

一共有32个关键字。

9种控制语句,主要用小写字母。

(2)运算符丰富

共有34种。

(3)数据结构类型丰富

(4)具有结构化的控制语句

(5)语法限制不严格,程序设计*度大

(6)允许直接访问物理地址,能进行位操作

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

(8)与汇编语言相比,程序移植性好

2.C程序的结构

C程序主要由头文件、主函数、系统的库函数和定义函数组成。其中main主函数是每个C语言都必须包含的部分。一个程序的开始是从main开始到main函数结束。

C程序的结构特点

  1. C程序是由函数构成的,函数是C程序的基本单位。至少包含main主函数。

  2. 一个函数有两部分组成:函数头和函数体。

  3. 一个C程序总是从main函数开始执行的。

  4. 语句和数据定义必须以;结尾。

  5. 要有注释,方式跟java一样。

#include<stdio.h>
int main(){
   printf("helloworld");
   return 0;
}

3.C语言的算法

  1. 确定性。无二义性,目的明确。

  2. 有穷性。不能无限执行,一定有个终止。

  3. 输入。0或者多个输入。

  4. 输出。

  5. 有效性。原则上能让人在纸上运算。

4.算法的表示方式

  1. 用自然语言

  2. 用流程图(如图)

    C语言学习
一、概述
二、数据类型及其运算
三、选择结构及其应用
四、循环结构及其应用
五、数组
六、函数
七、预处理命令
八、指针
九、结构体与共用体

  3. 用N-S流程图表示

  4. 用伪代码表示

5.C程序的三种基本结构

顺序结构、选择结构、循环结构

C语言学习
一、概述
二、数据类型及其运算
三、选择结构及其应用
四、循环结构及其应用
五、数组
六、函数
七、预处理命令
八、指针
九、结构体与共用体

6.结构化程序设计方法

  1. 自顶向下

  2. 逐步细化

  3. 模块化设计

  4. 结构化编码

 

二、数据类型及其运算

1.基本字符和标识符

  • 基本字符

英文字母

数字

空白符

标点和特殊字符

字符常量

  • 标识符:用来标明变量名、函数名、数组名、结构体名、共用体名、文件名、必须由有效字符构成。

  • 标识符的构成规则:

1.标识符只能由字母、下划线和数字三种字符构成,且不能用数字开头。

2.字母区分大小写。

3.不能是C语言的关键字。

C语言学习
一、概述
二、数据类型及其运算
三、选择结构及其应用
四、循环结构及其应用
五、数组
六、函数
七、预处理命令
八、指针
九、结构体与共用体

2.常量与变量

  • 常量

  1. 字面常量:字母数字。

  2. 符号常量:π

  • 变量:程序运行过程中值可以改变的量。

    1. 变量名,即标识符

    2. 存储空间,在内存中占用的一定的存储单元,空间大小是由变量的类型决定的。

    3. 变量值,即存储空间中存放的变量的值。

      对于变量,C语言规定一定要“先定义,后使用”

      [存储类型] 数据类型  变量1,变量2,.....变量n;

3.数据类型

C语言学习
一、概述
二、数据类型及其运算
三、选择结构及其应用
四、循环结构及其应用
五、数组
六、函数
七、预处理命令
八、指针
九、结构体与共用体

(1)整形数据

整形常量,即整常数。十进制、八进制、十六 进制。

  • 十进制

  • 八进制,以数据0开头。

  • 十六进制,以0x开头。

整形变量

按照存储空间不同,分为三种:

  • 基本型:int,2个字节(16位),最高位是符号位

  • 短整型:short 2个字节

  • 长整型:long 4个字节(32位)

  • 无符号的整型变量

    • 无符号基本型:unsigned int

    • 无符号短整型

    • 无符号长整型

(2)实型数据
  • 实型常量,即实数或者浮点数。

  • 实型变量

    • 单精度型:float,4个字节

    • 双精度型:double,8个字节

    • 长双精度型:long double 16个字节

(3)字符型数据

字符型常量

  • 字符常量:必须用单引号括起来,单引号中只能为单个字符。例如:‘A’

  • 字符串常量:双引号括起来的,长度为n的字符串,在计算机中用了n+1个字节,因为最后一个字节存的是‘ ’,作为字符串结束的标志。

‘A’和“A”是完全不同的概念,一个是占用了一个字节,一个是占用了两个,注意。

  • 转义字符:以“”开头的字符。转义字符通常表示一些控制代码和功能定义。如: 表示回车换行等。

字符型变量

字符变量在内存中占一个字节,器定义形式和整形、实型变量一样,只是数据类型标识符变成了char。

讲一个字符赋值给一个字符变量,不是吧这个字符本身放到内存中,而是将其所对应的ASCII码值放到内存中。

4.数据类型转换

隐式类型转换,由编译系统自动进行,不需认为干预。

  • 如参与原酸的变量类型不同,则先转换成同一类型,然后进行运算。

  • “低级向高级转换”原则。

    char,short-int-unsigned-long-double
    float-double

    double是*的,其他类型的跟double加完都是double型。

  • 赋值运算两边的数据类型不同时,复制好右边量的类型将转换为左边量的类型。

a+b是double型,d为整形
int d
d=a+b
权重高于上一条。

显示类型转换,即强制类型转换,跟java一样。

三、选择结构及其应用

  1. 关系运算符和关系表达式

    1. 关系运算符是对两个操作量进行大小比较的运算符,其操作的结果是真或者是假。1表示真,0表示假。

      • (<、<=、>>=)的优先级是一样的(=、!=)优先级是一样的,前4种优先级高于后两种。

      • 关系运算符的结合性是从左到右的

    2. 关系表达式:是用关系运算符吧操作对象连接起来而构成的式子,错做对象可以是各种表达式。关系表达式原酸结果值为1或0.

      如: (6>5)<2
      结果是:1

       

四、循环结构及其应用

五、数组

注意:字符数组和字符串数组不同

char a[]="abcde";
这个数组的长度是6,因为这个是字符串,后面默认有一位
char a[6]={"abcde"}

 

六、函数

七、预处理命令

C语言预处理命令,都是以#号打头,末尾不加分号,以区别C语句、C声明和定义。

C提供的预处理功能主要由以下三种:

  • 宏定义

  • 文件包含

  • 条件编译

  1. 宏定义

    在C语言源程序中,允许用一个标识符来表示一个字符串,成为“宏”。在C语言中,“宏”分为有参宏和无参宏两种。

    1. 不带参数的宏定义的一般形式为:

      #define 标识符 字符串
      #define PI   3.1415926
    2. 带参数的宏定义

      #define 宏名(参数表)字符串
      #define S(a,b) a*b
      调用时:
      areal = S(m,n)
      等价于m*n
    3. 撤销宏定义命令

      宏定义命令#define应该写在函数外面,通常写在一个文件之首,这样这个宏定义在整个文件范围内都是有效的。但是,也可以用命令#undef撤销已经定义的宏,终止该宏定义的作用域。

  2. 文件包含命令

    文件包含是指一个源文件可以将另一个源文件的全部内容包含进来,是以“#include”开头的预处理命令。类似于java的import。

    #include "文件名"
    or #include <文件名>
  3. 条件编译命令

    一般情况下,所有的源文件都是要参与编译的。但是有时希望一部分源文件在指定情况下才进行编译,这就是条件编译。

    第一种方式:
    #ifdef 标识符
    	程序段1
    #else
    	程序段2
    #endif
    
    第二种方式:
    #ifndef 标识符
    	程序段1
    #else
    	程序段2
    #endif
    
    第三种方式:
    #if 标识符
    	程序段1
    #else
    	程序段2
    #endif

     

八、指针

java中,调用参数是穿参,本质上都是在传值,把主函数复制一份,传递给子函数。但是C语言中,可以通过指针,实现传址,把要处理的对象传给其他函数,主函数的值也会跟着改变。

定义:

类型说明符 *变量名1,*变量名2;
int *p;
char *q;

 

九、结构体与共用体

  1. 结构体(structure)是不同数据类型的数据所组成的几何体,是构造类型数据。

    每一个结构体有一个名字,成为结构体名。一个结构体由若干成员组成,每个成员有自己的名字,为结构体成员名。每个成员的数据类型可以不同。

    结构体类似于java中的类。

    1. 声明一个结构体类型的一般形式为:

      struct 结构体名
      {
      	数据类型 成员1名称;
      	数据类型 成员2名称;
      	。。。
      };
    2. 结构体变量定义

      • 先声明结构体的类型,在定义变量,如struct student S1;

      • 在声明结构体类型的同时定义结构体变量。

        struct 结构体名
        {
        
        }结构体变量名表;
      • 直接定义结构体变量,不出现结构体名

        struct 
        {
        
        }结构体变量名表;
    3. 结构体变量的初始值

      结构体变量初始化格式:

      struct 结构体名 结构体变量名={初始数据};
    4. 结构体变量引用

      结构体变量名.成员名

      如:S1.sSex

      这个跟Java一样。

    5. 结构体指针变量

      typedef struct student
      {
      	int id;
      	char sex;
      	int sEng;
      }STU;
      
      STU *p;
      p=&S1;