目录

  • 1 第一章 C语言简介
    • 1.1 C语言前世今生
    • 1.2 主流开发环境介绍
    • 1.3 第一个小程序解析
    • 1.4 常见编译错误
    • 1.5 章节知识点小结
  • 2 算法基础
    • 2.1 算法-程序的灵魂
    • 2.2 算法的描述-流程图
  • 3 数据类型与运算符
    • 3.1 数据描述
    • 3.2 运算符和表达式1
    • 3.3 运算符和表达式2
    • 3.4 章节知识点小结
  • 4 顺序结构程序设计
    • 4.1 输入和输出
    • 4.2 顺序结构程序设计
    • 4.3 章节知识点小结
  • 5 选择结构程序设计
    • 5.1 关系运算符和关系表达式
    • 5.2 逻辑运算符和逻辑表达式
    • 5.3 if语句
    • 5.4 条件运算符
    • 5.5 switch语句
    • 5.6 章节知识点小结
  • 6 循环结构程序设计
    • 6.1 while循环结构
    • 6.2 do_while循环结构
    • 6.3 for循环结构
    • 6.4 循环的嵌套
    • 6.5 break语句和continue语句
    • 6.6 章节知识点小结
  • 7 数组
    • 7.1 一维数组
    • 7.2 二维数组
    • 7.3 字符数组
    • 7.4 章节知识点小结
  • 8 函数
    • 8.1 子程序设计
    • 8.2 函数定义
    • 8.3 函数的调用
    • 8.4 局部变量和全局变量
    • 8.5 参数传递
    • 8.6 函数递归调用
    • 8.7 章节知识点小结
  • 9 指针
    • 9.1 指针的基本概念
    • 9.2 指针变量的定义及引用
    • 9.3 通过指针引用数组元素
    • 9.4 指向多维数组的指针和指针变量
    • 9.5 用指向数组的指针作函数参数
    • 9.6 指针与字符串
    • 9.7 函数指针和指针函数
    • 9.8 章节知识点小结
  • 10 用户自己建立数据类型
    • 10.1 定义和使用结构体变量
    • 10.2 使用结构体数组
    • 10.3 结构体指针
    • 10.4 章节知识点小结
  • 11 编译预处理
    • 11.1 宏定义预处理
    • 11.2 文件包含预处理
    • 11.3 条件编译预处理
    • 11.4 章节知识点小结
  • 12 文件
    • 12.1 文件的基本知识
    • 12.2 文件的基本操作
    • 12.3 章节知识点小结
数据描述


一、常量

常量是指在程序运行过程中,其值不能被改变的量。常量分为以下数据类型,如:

(1)整型常量:1000,12345,0,-345

(2)实型常量:–十进制小数形式:如0.34    -56.79   0.0–指数形式:如12.34e3 (其中e代表以10为底的指数,因此该数代表12.34´103)

(3)字符常量:用单撇号括起来的一个字符。

普通字符:’?’、’a’

转义字符:以“\”开头的字符序列。意思是将 “\”后面的字符转换成另外的意义,如’\n’代表换行。

(4)字符串常量:用双撇号括起来的若干个字符,如”boy”、“H”。

符号常量:C语言中也可以用一个标识符来表示一个常量,称为符号常量。符号常量用#define指令,指定用一个符号名称代表一个常量。如:

#define  PI  3.14

经过以上指定后,本文件中从此行开始的所有PI都代表3.14。使用符号常量的好处有:

①含义清楚。在定义符号常量时应考虑见名思义,因此,在看到PI时就大致知道这代表圆周率,在程序中需要使用圆周率时,就可直接使用PI。

②在改变一个常量时,能做到一改全改。如在程序中多处使用圆周率进行相关计算,当需要统一改变圆周率的计算精度时,可直接将定义常量的语句改为:#define  PI  3.14159

二、变量

在程序运行期间,可能会用到一些临时数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来标识。这些用来引用计算机内存地址的标识符称为变量,定义的标识符就是变量名,内存单元中存储的数据就是变量的值。


从上图可以看出,变量名实际上是以一个名字代表的一个存储地址

注意:变量必须先定义,后使用

三、标识符

一个对象的名字,如符号常量名、变量名以及后面将要学习的函数名等。

C语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。

合法的标识符:如sum,average,_total, Class, day, BASIC, li_ling

不合法的标识符:M.D.John,¥123,#33,3D64,a>b

四、变量的数据类型

C语言要求在定义所有变量时都要指定变量的类型。为什么呢?因为在计算机中,数据是存放在存储单元中的,存储单元是由有限的字节构成的,每一个存储单元中存放数据的范围是有限的,不可能存放“无限大”的数,也不能存放循环小数,因此,在存放每一个数前,都要确定该数的数据类型,然后再按数据类型分配固定的个字节。

所谓类型,就是对数据分配存储单元的安排,包括存储单元的长度(占多少字节)以及数据的存储形式,不同的类型分配不同的长度和存储形式

C语言允许使用的数据类型基本类型、枚举类型、派生类型,本章主要了解基本类型。基本类型又包括整型类型和浮点类型,整型和浮点型又可细分为以下几种

整型类型:基本整型、短整型、长整型、双长整型(C99新加)、字符型、布尔型(C99新加)

浮点类型:单精度浮点型、双精度浮点型、复数浮点型

不同类型的数据在内存中占用的存储单元长度是不同的,存储方法也不相同。

1.整型变量

整型数据常见的存储空间和值的范围如下表所示:


注意:

C标准没有具体规定各种类型数据所占用存储单元的长度,而是由各编译系统自行决定的。C标准只要求long型不短于int型(int≤long),short型不长于int型(short≤int)。

整型变量的定义形式如下:

   类型说明符   变量名,变量名,……;

例如:

int a,b,c=0;

long x=1;

unsigned int p,q;

2.实型变量

实型变量也称为浮点型变量,用来存储小数数值的。浮点型变量分为两种:

float型(单精度浮点型):编译系统为float型变量分配4个字节,6位有效数字

double型(双精度浮点型):编译系统为double型变量分配8个字节,15位有效数字

例:观察以下程序的输出结果。

#include <stdio.h>

void  main( )

{float a;

double b;

a=33333.3333;

b=33333.3333;

printf("%f\n%f\n",a,b);

return;

}

程序的输出结果为:


结果分析:

(1)变量a为单精度浮点型,只有6位有效数字,在将变量a用%f格式输出时,默认有6位小数,因此,虽然给变量a赋值时,只有4位小数,但输出时确有6位小数,并且输出的数中只有整数部分的5位和小数部分的第1位(共6位)是完全正确的,小数部分后5位有可能存在误差。

(2)变量b为双精度浮点型,共有15位有效数字,在将变量了b用%f格式输出时,默认有6位小数,因此,输出的数中小数部分6位,加上整数部分5位(共11位)都是完全正确的

3.字符型变量

字符型变量用于存储一个单一字符,用char表示,其中每个字符变量都会占用1个字节。

注意:在给字符型变量赋值时,要用一对英文半角格式的单引号(' ')把字符括起来。

如:

charc = ’A’;  //系统把“A”的ASCII代码65赋给变量c

printf(”%d  %c\n”,c,c);

输出结果是:

     65 A

说明:任何字符在内存中存储的都是其ASCII值(整数),在输出时可指定输出形式为“整数(%d)”或“字符(%c)”。