今天老师又带着我们串讲了一下c的一部分东西,写这篇博客是为了总结一下今天学过的知识。
首先先说一下编程语言,编程语言经历了从低到高的发展,从机器语言到汇编语言,再到高级语言,而c就是高级语言,而在高级语言中又分为面向过程的语言和面向对象的语言,c是前者。进入c语言。
一、首先说c的数据类型
1、整型 shot(短整型,2个字节) int(整型,4个字节) long(长整型,8个字节)
2、浮点型 float(4个字节) double(8个字节)
3、字符型 char(1个字节) 1字节=8bit
4、数组 一维数组 a[3] 多维数组 a[3][4] a[3][4][5]
5、指针 *p
6、结构体 struct
7、公用体
二、c中的表达式和运算符
1、赋值表达式 = 、+=、-=、*=、/= a = 3; a+=3;
2、算数表达式 +、-、*、/ 、%(取余) a=10%3;
3、关系表达式 <、>、<=、>=、==、!=
4、逻辑表达式 &&(与) ||(或) !(非)
5、位运算表达式 >> (左移) << ~ (取反) ^(异或) &(按位与) |(按位或)
00001111 >>1 后0000111 ~(00001111) -> 11110000
6、条件表达式 表达式1?表达式2:表达式3; a = 4 > 3? 2 : 1;
三、c程序处理流程
1、顺序执行 按代码自上至下执行
条件分支
if语句 if(条件){...} if(条件){...}else if(...){...}
switch 语句 switch(表达式){
case 常数1: xxx; break;
case 常数2:xxx;break; //这里每个case后面都要跟一个break用以结束switch语句
}
2、循环执行
while(表达式) { 代码块 } 先判断表达式是否成立,若成立则执行代码,否则不执行。
do{代码块} while(表达式) 先执行一遍代码,然后判断表达式还是否成立,若成立则再一次执行代码。
for( 1; 2; 3) {代码4} 首先执行语句1,然后判断2是否成立,若成立执行代码4,然后执行3,后再执行2,形成循环
四、数组 :数组是最基本最常用的数据结构之一
1、数组的定义: 类型名 数组名[长度]
int array[3]
2、使用数组:通过引用数组下标来调动数组元素 数组名[下标]
数组名就是数组本身第一个的地址,其本身就相当于一个指针。可以通过数组名+下标来引用下标所对应元素的地址,进而可以引用元素
3、多维数组: int array[2][3] char[3][4][5]
其实多维数组和一维数组在内存的分配上是一样的,都是一段连续的内存空间。唯一不同的就是多了几个节点。
五、函数:在我看来就是把特定的功能做一个包装,也就是把程序中的功能模块化处理。
使用一个函数首先要声明
函数返回值类型 函数名 (参数列表)
int max(int x,int y);
然后就是在函数体中实现函数将要拥有的功能;
int max (int x,int y){
函数体
}
值得一提的是c的标准系统函数库为我们提供了很多实现一些功能的函数,这些函数分类包括在一些头文件中。
例如: stdio.h :printf() scanf() …
stdlib.h :malloc() rand() …
string.h :strlen() strcmp() strcpy()…
……
六、指针:以我的理解指针的本质就是一个地址,通过*运算获取地址所指向的值,从而用来一系列操作。
1、定义一个指针: 类型 * 变量名; int * p;
指针指向某个地址 p=&a;
2、指针的操作:指针可以通过地址来获取或改变地址指向的值。
例: int a=3;
p=&a;
*p=5;
则这时a的值就变成了5。
3、指向数组的指针
int a[10];
p=a; p=&a[0]; 这两个表达式的结果是相同的。
4、指针给我们带来灵活、方便的同时,有时候也会带来麻烦。
七、字符串
char s;
s=’f’;直接赋字符
s=50;通过字符所对应的值赋值。
关于对字符串的处理c函数库提供了一个string.h头文件其中所包含的常用的函数有:
strlen 返回字符串长度
strcmp 比较两个字符串的大小
strcpy 拷贝字符串
strcat 连接字符串
strmove移动字符串
……
八、结构体:将不同类型的变量组成一组。
定义:struct 结构体名{struct point{//定义一个结构
成员int x;
}; int y;
};
机构体中的变量为成员
struct声明其实是定义了一个新的数据结构就像int一样。
struct{……} x, y, z;
int x, y, z; 其实这两种形式是相同的,这说明struct是另一种数据结构
结构体成员的引用 结构名.成员 point . x = 3;
既然struct是一种结构,那么它也就可以作为函数的返回值类型
struct getpoint (int x ,inty){……}
结构数组 struct 结构名[5]; 就像 int a[5];
指向结构体的指针,即结构指针
struct 结构名 * 变量名;
struct point * p1;然后为指针分配内存后就可以调用相关成员了
调用成员方式 p1->x = 3;
结构体还可以自引用: struct Student{
int x;
struct Student stu1;}
当然也可以引用别的结构体。
九、FILE 文件的保存读取
FILE *fp; 定义一个指向文件的指针
文件操作是由一系列函数完成的
fopen(“路径”,“打开方式 w ,r ,a…”) 打开文件
fclose(fp); 关闭文件
fprintf(fp,…) 向文件中刷入数据
fscanf(fp,…) 从文件中读出数据
......
注: 只是大概很笼统的写了些c语言的大部分点。若有错误欢迎指正,共同交流。
------LC