C语言:概述
章节内容
计算机组成:
中央处理器CPU
内存
输入设备
输出设备
网络
C语言程序的开发过程
开发三步骤
-
编辑(编写代码):程序员向.C文件写入程序
-
编译(编译的详细过程):将源文件(.c)编译成可执行程序(二进制)
编译过程分为4步
-
预处理
-
编译
-
汇编:
-
链接
-
-
运行:运行可执行文件
程序结构说明
#include <stdio.h> // 入口函数:每一个.c文件有且仅有一个入口函数 // C语言中入口函数的返回值和参数列表比较灵活,唯一的要求:函数名必须是main int main(int argc,char *argv[]) { // 向控制台输出hello world! printf("hello world!\n");// 一行代码执行结束,使用“;”表示结束 return 0; }
-
注释:
代码中起到解释说明的文字
-
预处理命令:
程序中包含的某一文件内容
-
主函数
C程序的入口函数,一个C文件有且仅有一个主函数
-
函数首部(函数头)/函数说明
说明函数类型,函数名和函数参数 如:int main()
-
函数体:
包括变量说明及语句执行部分,如:{…}
-
函数调用语句:
比如格式输出函数:printf(),输出“hello world!”
编写规范
-
常用缩进书写格式(一般缩进2-4个字符,推荐4个)
-
有足够的注释(添加必要的注释,使代码更好理解)
-
有合适的空行(一般预处理命令和函数、全局变量和函数、函数与函数之间有空行,使得代码结构更清晰)
-
{}对齐(c和c++中
{
和}
独占一行) -
函数体内采用分层缩进和模块化的书写方式。
-
不把多条语句写在程序的同一行上。
-
命名:变量或者函数命名要尽可能包含更多含义,但不能太长。
int stedent_number; int stu_id;
-
C语言程序特点
C语言程序在设计时,需要注意以下细节
- 一C程序由一个或多个函数构成,但有且仅有一个主函数(main函数);main函数是程序执行的入口,可置于程序任意位置。
- 程序中可以有预处理命令(如#include命令)预处理命令通常在程序的最前面
- 每个语句可以分号结尾;预处理命令、函数头和花括号之后不能加分号
- 函数体由一对花括号括起来
- 包含在/…内的文本为注释。
- 一行可以写几个语句,一个语句也可以写在多行上。
- 程序区分大小写字母。一般变量、语句等用小写字母书写;符号常量、宏名等用大写字母书写。
- 标识符和保留字之间必须加空格分割,如:int age。
C语言中的注释
在C语言中,注释一般分为两类,单行和多行
注释的作用:给代码添加解释说明文字,提升代码的可读性,注释本身是不会被执行的。同时也可以使用注释屏蔽代码
单行注释
说明:单行注释使用双斜杠//表示。我们一般用于常量、变量的定义。
语法:
//单行注释
多行注释 说明:多行注释使用斜杠星号 说明。 语法: 1 2 3 4 /* 要注释 的代码 / /…*/ 表示。他可以占用多行代码,但不能嵌套。我们一般用于函数,文件
数据类型
定义:
数据类型其实是固定大小内存的别名,并且描述了一个变量存放什么类型的数据。简单来说,就是组织和操作数据。
数据:计算机要处理的数据(数字、字符串、文字、符号、图片、音频、视频等)。
-
数据类型不仅帮我们组织和操作数据,还决定了程序如何有效的利用内存。
-
了解数据类型的内存需求是理解计算机管理和操作数据的关键。
小贴士
简单来说,程序的运行需要用到内存。
内存存储单位
字节(byte):计算机存储容量的一种单位,一般应用层最小存储单元的表示。
比特位(bit):二进制数(0和1)计算机是以二进制的方式进行存储的,我们应用层可以通过位运算进行位的操作。
1个字节(BYTE)=8位(BIT)
1个千字节(KB)=1024字节
1MB =1024KB
1GB = 1024MB
1TG = 1024GB
…
数据类型分类和计算方法
数据类型在内存中的大小
序号 | 数据类型 | 中文说明 | 大小(字节) |
---|---|---|---|
1 | int | 整型 | 4 |
2 | short | 短整型 | 2 |
3 | long | 长整型 | 4(32位)8(64位) |
4 | long long | 长长整型 | 8 |
5 | float | 单精度浮点型 | 4 |
6 | double | 双精度浮点型 | 8 |
7 | char | 字符型 | 1 |
8 | bool(BOOL) | 布尔型(真-true,假-false) | bool:1,ture:4;false:4 |
:注意:因为C语言没有Byte这个单位,所以我们一般使用char来表示字节,因为==1个char 1个byte
注意:
某个数据类型或者变量所占的字节所占的字节数->sizeof(某个数据类型或变量名)
printf("true size:%d\n",sizeof(true));//ture size:4 printf("false size:%d\n",sizeof(false));//false size:4 printf("bool size:%ld\n",sizeof(bool));//bool size:1
总结:
①数据类型在内存中所占的字节数跟C语言的编译系统有关。
②计算某个数据类型所占的字节数可以用sizeof.
③布尔类型要添加#include <stdbool.h>,也可以用int类型的0表示假,非0表示假。
课堂练习
校验各个数据在内存中的大小?
常量与变量
在C语言中,数据的基本表现形式是常量和变量。不管是常量还是变量都需要在内存中开辟一块空间,用于数据的存放。
常量
- 定义:在程序执行过程中其值不能改变的量。
- 分类:int、float、double、char和符号常量。
整型常量(int)
-
整型常量可用十进制、八进制、十六进制三种形式表示。
-
十进制整型常量:由0-9数字组成,没有前缀,不能以0开头(如:0可以,09不可以)
-
八进制整型常量:以0为前缀,其后由0-7的数字组成,没有小数部分。(如023)
-
十六进制整型常量:以
0x
或0X
为前缀,其后由0-9
的数字和A-F
字母组成,没有小数部分。(如:0X00FF0000)整型常量中的长整型数据可用
L
作为后缀(比如:123L)\ -
整型常量的分类
- 有符号与无符号基本整型常量-128 - 127
- 有符号与无符号长整形常量
- 有符号与无符号短整型常量
-
整型常量的表示
- 十进制表示:可以使用10个数字符号0-9以及+,-,如:123,-456
- 八进制表示:以0开头,可以使用7个数字符号0-7以及+,-,如:0123,-011
- 十六进制:以0x开头,符号有
0-9
A-F
,如:0x12
-
浮点型常量
c语言中的浮点数就是平常所说的实数,有两种表现形式;
- 十进制小数形式:如0.123,-17.8
- 指数形式(科学计数法),如:1230.0可以表示为1.23e3或1.23E3
注意:
①在符号e的后面必须要有数字
②在符号e的后面必须为整数,不能是带有小数点的实数型。实数型常量的后缀用F(或f)表示单精度型。后缀用L(或l)表示双精度型。
字符常量
用单引号 ‘’
括起来的一个字符,如:‘a’、‘A’、‘_’等,比如:‘霍’就不是字符,一个汉字所占的字节数超过了一个。中文符号当成汉字理解。英文输入法下输入的字母数字符号都是单字符。
转义字符常量:以反斜杠 \
开头的字符序列,表示控制及不可见的字符,如:
序号 | 字符形式 | 含义 | ASCLL码 |
---|---|---|---|
1 | \n | 换行 | 10 |
2 | \r | 回车 | 13 |
3 | \0 | 空字符 | 0 |
4 | \t | 水平制表 | 9 |
字符串常量
说明:在C语言中是支持字符串常量的,但不支持字符串变量,字符串变量需要使用字符数组或字符指针实现
-
用一对括号
""
括起来的一个字符序列,如:“How do you do?”“12.25” -
可以输出一个字符序列,如:printf(“hello world\n”);
注意:
字符串常量“a”与字符常量’a’的区别:
字符串有两个字节(包含\0),而字符常量a只有一个字节
系统自动为字符常量加上结尾的”\0“,所占用内存单元多一个,单字符常量的长度,可用sizeof()运算符来测量。
符号常量
定义一个标识符来代表一个常量。
- 如:用PI代表圆周率Π,即:3.1415926
好处:
- 增加可读性
- 增强了可维护性
定义符号常量:
-
用编译预处理命令
#define(宏定义)
格式:
#define 标识符 字符串
-
标识符和字符串之间用空格隔开
-
句末不用分号
-
表示符的命名采用大写,如果有多个单词,使用下划线分隔,举例:MAX_VAL,MIN_VAL,AVG
#include <stdio.h> #define PI 3.14 #define R 5 int main() { int a =PI*R*R,//预处理后:int a=3.14*5*5 }
案例:
在程序中使用符号常量。
#define PRICE 30/*给变量赋值*/ #include <stdio.h> void maih() { int num,total;/*定义整型变量*/ num = 10;/*给变量赋值*/ total = num * PRICE;/*符号常量参加运算*/ printf("total=%d\n", total);
说明:
-
程序中⽤#define PRICE 30定义了符号常量PRICE的值为30,伺候程序中出现的PRICE都⽤30代替。
-
符号常量不占内存单元。
-
此后在本函数中不允许改变PRICE的值,也不允许再为其赋新的值。
-
使⽤符号常量的好处:
- 含义清楚
- ⼀改全改