C语言前置知识
一、概念
1.软件
软件是一系列按照特定顺序组织的计算机数据和指令的集合,即程序加文档的集合体。
软件被划分为:系统软件、应用软件和介于两者之间的中间件。
2.文件
文件时一个外存(硬盘、U盘、网盘)的概念,文件由两部分构成:文件名和文件主体。
文件可分为(用C语言的文件举例):
(1)可执行文件:扩展名为.exe的文件为可执行文件。
(2)不可执行文件:.c/.cpp源文件(文本)、.h头文件(文本)、.i预编译文件(文本)、.s汇编文件、.o/.obj二进制目标文件。
3.进制及其转换
X进制的意思就表示每一位置上的数运算时逢X进一。
计算机中的进制分为二进制、八进制、十进制、十六进制。
二进制:0、1
八进制:0、1、2、3、4、5、6、7
十进制:0、1、2、3、4、5、6、7、8、9
十六进制:0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f
二进制数、八进制数、十六进制数转换成十进制数的规律是相同的,按位权形式展开多项式和的形式,求其最后的和,就是其对应的十进制数——简称“按权求和”。
(10100)2 -> 1 * 24+0 * 23+1 * 22+0 * 21+0 * 20 -> (20)10
(245)8 -> 2 * 82+4 * 81+5 * 80 -> (165)10
(1F2)16 -> 1 * 162+15 * 161+2 * 160 -> (498)10
要把十进制转换成二进制(八进制或者十六进制),也可以用这种方法,把十进制数拆成对应的多项式和的和形式。
4.定义和声明
定义:为这个变量分配一块内存并给它一个名字(变量名)。注:名字和内存绑定后,无法改变或再定义。
声明:(1)告诉编译器,这个名字已经匹配一块内存了;(2)告诉编译器,这个名字被预定了,其它地方不能再用了。
区别:定义的对象有一块内存,声明的对象没有内存。
二、数据类型
1字节=1存储单元=8二进制位(byte)
1.整型
char:占1字节
short:占2字节
int:占4字节
long int:占4字节
long long:占8字节
2.浮点型
float:占4字节
double :占8字节
long double:占8(12或16)字节
3.bool型
bool:占1字节,但是只能存放0或1
4.无类型
void(不重要)
三、变量
变量:是以某标识符为名字,其数值可以改变(可读,可写)。
变量分为三种:
(1)全局变量:在代码内、函数外定义的变量。
(2)局部变量:在函数内定义的变量。
(3)块变量:在块内定义的变量。
#include<stdio.h>
int a = 10; //全局变量
int main()
{
int b = 20; //局部变量(main()主函数内的变量)
for (;;)
{
int c = 30; //块变量(for循环内的变量)
}
return 0;
}
四、常量
常量:数值不能改变(只可读,不可写)。
常量分为:
1.字面常量
2.用#define定义的宏常量
3.用const关键字修饰的变量,称为常变量。
4.枚举常量
5.字符常量和字符串常量
#include<stdio.h>
//宏常量
#define PI 3.14
//枚举常量
enum week {Mon = 1,Tues = 2,Wed = 3,Thurs = 4,Fri = 5,Sat = 6,Sun = 7};
int main()
{
const int a = 10; //用const修饰的常变量
20; //字面常量
char b = 'a'; //字符常量,b=97
char c[] = { "a" }; //字符串常量
return 0;
}
五、常用转义字符、含义及ASCII码值
转义字符用来将普通字母转换成控制字符,或将控制字符转换成普通符号。
转义字符 | 意义 | ASCII码值 |
---|---|---|
\n | 换行符 | 10 |
\t | 水平制表符 | 9 |
\0 | 空字符 | 0 |
使用转义字符时需要注意:
1.转义字符只能用小写字母。
2.\t移动四格还是八格,在编译器里面设置
六、可见性和生存期
作用域(可见性)值标识符能够被使用的范围,只有在作用域内标识符才可以被使用。
生存期也叫生命期,此阶段针对的是程序的执行过程。
七、取余
取余符号:%
取余在C语言中的作用:
1.判断是否能够整除某个数。
2.判别奇偶数,判别质数(或者素数)。
3.计算范围,形成循环。
4.求最大公约数。
求最大公约数代码:
#include<stdio.h>
int main()
{
int a;
int b;
int c = 1;
scanf_s("%d%d", &a, &b);
while (c != 0)
{
c = a % b;
a = b;
b = c;
}
printf("最大公约数为:%d \n", a);
return 0;
}
八、指针
定义的变量在计算机中存储,占有一定的内存,每一处内存都有与其对应的地址,而存放这地址的变量,称为指针变量。
#include<stdio.h>
int main()
{
int a = 10; //将10存放在名字为a的区域中
int *b; //定义一个区域名为b,类型为指针变量
b = &a; //取地址符:&,把a 的首地址存放在b里
*b = 100; //把100存放在b所指向的地址(a)里
return 0;
}
注意事项:
1.b里面存放的是a的首地址(因为a是int型变量,占4字节,每个字节都有自己的地址,所以统一存放首地址)。
2.指针变量(b)的类型和所指向变量(a)的类型保持一致。
3.对b的操作就是对地址的操作(b的改变只影响b所指向的地址,而不会改变a的地址)。
4.对*b的操作就是对a数值的操作(经常与数组一块用)。
九、结构体
程序开发人员可以使用结构体来封装一些属性,设计出新的类型。
#include<stdio.h>
//定义一个学生类型,包含id、name、sex、age属性
struct Student
{
char s_id[10];
char s_name[10];
char s_sex[5];
int s_age;
};
int main()
{
struct Student stud={"3170811047","mengfanjian","man",21}; //定义一个变量,名字叫stud,类型为Student
return 0;
}
十、关键字
C语言的关键字共有32个,根据关键字的作用,可以分为数据类型关键字和控制语句关键字。
1.数据类型关键字
void char short int long float double
signed(字符型:正数还是负数) unsigned(非字符型)
truct union enum auto static register
typedef sizeof extern const volatile
2.流程控制关键字
if else switch case default for do while return continue break goto
3.比较重要的关键字
1.sizeof:计算类型的大小或者变量的大小,也就是字节个数。
printf("size of int:%d \n",sizeof(int)); //输出int类型的大小
2.typedef:为复杂的声明定义一个简单的别名。
typedef unsigned int 8; //定义8代表无符号的int型
3.extern:说明此变量或函数在别处定义了的,要在此处引用。
4.static:用static修饰变量和函数,变成静态变量。
5.const:用来定义只读变量的关键字。被const定义的变量为常变量,从定义起,无法再被改变,只能读取。