C语言的特点:
- 1.C语言是一种结构化语言
- 2.C语言语言简洁、紧凑,使用方便、灵活
C语言只有37个关键字
分类 | 占比 |
---|---|
数据类型关键字 | 12个 |
控制语句关键字 | 12个 |
存储类型关键字 | 4个 |
其他类型关键字 | 9个 |
C语言是一种中级语言
,易于移植,既具有高级语言的通用性及易写易读的特点,又具有汇编语言的"位处理"、"地址操作"等能力,允许直接访问无力物理地址,能进行位运算操作,能实现汇编语言的大部分功能!
C语言程序结构
第一个C语言程序
#include <stdio.h> //文件包含,预处理命令
void main(){
/*程序从函数main开始执行
在屏幕上输出引号内容 */
printf("Hello,world!");
}
main
表示主函数,void
为函数类型,每个程序必须有且只能有
一个main函数!!,函数体(功能语句)放在{}
中。
#include <stdio.h>
:表示明程序中用到C语言系统提供的标准功能。
printf
是C语言的输出函数,/**/
为注释,增加程序可读性。
一般情况下,C语言程序由5部分组合而成:
- 1.文件包含部分(预处理部分)
- 2.变量说明部分
- 3.函数原型声明部分
- 4.主函数部分
- 5.自定义函数部分
不是每一个C语言程序都包含上面的5个部分,最简单的C语言程序可以只有文件包含和主体部分
程序结构说明 !重点
1.C语言程序可以由多个函数构成,但是只能有一个main函数,程序从main函数开始执行,然后通过函数调用完成部分功能,最后在main函数结束。
2.main函数位置任意,函数时C程序的基本单位
3.被调用的函数可以是系统提供的库函数,也可以是用户自己编制设计的函数,因为这种特点使得很容易实现程序的模块化。
函数的组成
一个函数由两部分组成:
函数说明部分 | 函数体 |
---|---|
包括函数类型、函数名,形式参数类型、函数参数(形参)名 | 即函数说明部分下面{} 中的部分,如果一个函数内有多个大括弧,则最外面的一对{} 为函数体的范围 |
int max (int x , int y)
函数类型 函数名 形参类型(int) 函数参数(x,y)
函数体一般包括:
- 1.变量定义(声明),如:
int a,b,c;
- 2.执行部分
在某些情况下也可以没有变量定义部分,如:第一个C语言程序
。甚至既无变量定义也无执行部分,如:
temp()
{ }
他是一个空函数,什么也不干,但这是合法的。
每一条语句由分号结束
书写格式自由,一行可以写多句,一句可以写多行,但是注意不要将字符串整体分开!!
大小写敏感,大小写不能混用,一般程序语句用小写字母,符号常量用大写
C语言本身没有输入输出语句
,输入输出的操作是由库函数scanf和printf等函数来完成的,C语言对输入输出实行函数化。
C语言程序的执行
1.C语言程序主要通过编译、链接后生成可加载模块(执行文件),才能在计算机上运行。
2.完整的程序生成过程:
3.程序开发的具体步骤:
- 1.编译源程序。将C语言源程序用一个后缀为
.c
的文件保存。如:myfile.c - 2.编译。检查源程序中的语法错误,生成目标代码文件(
.obj
)。如myfile.obj - 3.链接。将多个目标程序(包含C语言函数库)链接到一个程序中,,生成可执行文件。如:myfile.exe
- 4.运行可执行文件,验证程序正确性。
C语言基本数据类型、运算符和表达式
C语言的数据类型:
不同类型的数据在内存中占用的字节数是不同的,数据类型的长度和取值范围会随着机器的CPU类型和编译器的不同而不同。
无符号的整数指不带符号的整数,即零或正整数
储存有符号的整数时,储存单元的最高位是符号位,其余各位表示数值,储存无符号的整数时,储存单元的全部用于表示数值
标识符
- 1.
所使用的字符:字母、数字、下划线。
- 2.
标识符只能由字母数字下划线组成,且第一个字符必须为字母或下划线
关键字
- 1.C语言中选用变量名、函数名等标识符时,不能与关键字发生冲突。
常量和符号常量
整型常量
C语言中整型常量有八进制、十六进制和十进制三种表示形式。
十进制(默认方式):可以包含0~9
的数字及表示负数的"-
" 号和表示正号的"+
"号。
例如: 100 -8 0 +123
八进制:以0
开头(前缀),可以包含0~7
的数字
例如: 010 0100 073
十六进制:以0x
或0X
开头(前缀),可以包含0~9
、A~F
、a~f
数字
例如: 0x38 0x10 0X10 0XFF 0x0a
所谓十进制,八进制,十六进制只是整型数值的三种不同书写形式而已
整形常量类型的确认:根据值大小默认类型
整型常量后面加后缀l
或L
,则认为是long int
型
例如: 123l 0L 432l 0x100l
无符号数也可用后缀表示,整型常数的无符号数的后缀为"U
" 或"u
"。
实型常量
实型也称为浮点型,实型常量也称为实数或者浮点数,在C语言中,实数只采用十进制
。他有两种表示形式:十进制小数形式
、指数形式
。
十进制形式:由数码0~9
和小数点
组成,及表示符号的"+
" 号和 "-
"号。
例如:1.0 1 +12.0 -12.0 0.0
指数形式:由十进制数,加阶码标志"e
" 或"E
"以及阶码(只能为整数,可以带符号)组成。
其中一般形式为:aEn(a为十进制数,n为十进制数)
例如 : 1e3 1.8e-3 -123E-6 -.1E-3
分别等于:1*10^3 1.8*10^-3 -123*10^-6 -0.1*10^-3
口诀:e前e后需有数,e后必为整数!
默认情况下,实型常量为双精度类型,在实型常量后加上"F
“或”f
"作为后缀表示类型为单精度类型。
规范化的指数表示形式:
小数点前只有一位非零数字,小数部分占6位,指数部分占4位,共13位。
例如:1.23e-2
%e输出时以规范化形式输出为:1.230000E-002
字符型常量
字符型常量是用单引号
括起来的一个字符,字符常量占一个字节的内存空间
,存储该字符的ASCLL码值,他有两种形式:可视字符常量、转义字符常量。
可视字符常量:单引号括起来的单个可视字符
例如: 'a' 'A' '+' '3' ' ' #注意小写和大写是不同的
转义字符常量:转义字符是一种特殊的字符常量。转义字符已反斜线"\
"开头,后面跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的含义。
字符串常量
字符串常量:是用一对双引号括起来的若干字符序列。
例如: "abc" "#arer" "A" "$"
字符串常量占得内存字节数等于字符串中字符数加一
。增加的一个字节中存放字符"\0
"(ASCLL码为0),这是字符串结束的标志。
符号常量
用一个标识符代表一个常量,称为符号常量,即标识符形式的常量
例如: #define PI 3.14
符号常量多用大写,变量用小写
符号常量与变量不同,他的值在其作用域内不能改变,也不能再被赋值
符号常量的好处是:
- 含义清楚
- 一改全改
变量
程序运行中其值可以改变的量为常量,存储输入数据,中间结果,最终结果
变量三要素:变量名称,变量的数据类型,变量的值
。
变量的数据类型决定
了他在内存中占据的储存单元个数,在储存单元中存放的数据即为变量的值!
变量的名字是标识符,C语言里面所有的名字都用标识符表示!
变量的基本操作:
- 将数值存入变量中,称为赋值。
- 将变量中的值取出,称为取值。
变量特性:喜新厌旧,取之不尽,变量必须先定义后使用
!!
注意:
- 在同一个作用域中,不要定义同名变量!!
- 尽量避免定义与库函数名同名的变量!!
变量的类型及其定义
整型变量
int x; //定义x为整型变量,储存单元占2个字节
unsigned int x,y; //定义x,y为无符号整形变量,储存单元占2个字节
unsigned long a,b; //定义a,b为无符号长整形变量,储存单元占4个字节
整型数据在内存中的存放形式
整数在内存是以补码表示的:
- 正数的补码和源码相同
- 负数的补码:将该数的绝对值的二进制形式按位取反再加一
整型数据溢出
由上表可知某种类型的数据所能表示的数值范围是一定的,当赋值超过该类型所能接受的最大值,将会发生错误,称为溢出!
实型变量
C语言的实型变量分为单精度(float)
实型和双精度(double)
实型和长双精度(long double型)
三种
实型变量定义
float x,y; //定义x,y为单精度(储存单元占4个字节),单精度提供7位有效数字
double a,b; //定义a,b为双精度(储存单元占8个字节),单精度提供16位有效数字
字符型变量
字符型变量用来储存字符常量,即单个字符
字符型变量定义:
char letter,digit;
字符数据在内存中的存储形式及使用方法:
每个字符变量被分配一个字节的空间,因此只能存放一个字符,字符值是以ASCLL码表的形式存放到内存单元中。
在C语言中,整型(大于等于0,小于等于255)与字符型数据可通用,他们通过ASCLL码表进行转换。
变量初始化
C语言中,在定义变量的同时赋值,称为变量的初始化
基本格式: 类型标识符 变量名 = 常量;
例如:
int a,b=1,c=2; //在定义整型变量b,c的同时赋值
float a=1.0; //在定义单精度实型变量a的同时赋值
char c='s'; //在定义字符型变量c的同时赋值
注意!!!,在C语言中int a=b=c=1;,这种初始化方式是错误的!!