关于暑假之前的学习总结,我还是以复习的形式进行总结。
第一:关于C语言的基础与提高
C语言的数据类型分类
为了更好地移植性,我们采用typedef定义自己的类型
Typedef unsinged int uint
Typedef unsigned char uchar
定义:创建一个变量,为其分配空间
声明:告知编译器,这个名字(变量名)已经匹配在一块内存上了,但是并未为其分配内存;
关键字-static
全局静态变量:作用范围局限于它的源文件
局部静态变量:局限于特定函数
静态函数:作用范围仅限于它的源文件
存放位置:程序开始时,存放在全局数据区,结束时释放空间
关键字-const 所修饰的变量不能被改变
关键字-extern
extern:表明变量或函数的定义在别的文件中,下面用到的这些变量或是函数是外来的,不是本文件定义的,提示编译器遇到此变量或函数时,在其他模块中寻找定义;
关键字-struct
多种数据组合起来的一个整体,其表现形式是一个结构体
关键字-union
当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;
控制语句的简单用法
数组和指针区别
首先对于编译器而言,一个数组是一个地址,一个指针是一个地址的地址。
数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着 一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。
指针可以随时指向任意类型的内存块,远比数组灵活,但也更危险。
数组保存数据 ,指针保存地址
数组直接访问数据 ,指针间接访问数据
数组由编译器自动分配和删除 ,指针动态分配和删除 malloc()和free()
数组中的常见算法
冒泡法排序
for(j=1;j<=9;j++)
for(i=1;i<=10-j;i++)
{
If(a[i]>a[i+1])
{t=a[i]; a[i]=a[i+1]; a[i+1]=t;}
}
字符串函数
strcat(字符数组1,字符数组2)
strcmp(字符串1,字符串2)
strlen(字符数组)
参数的传递
当需要值的时候传数据
当需要改变值的时候传地址
如果函数接口有指针参数,既可以把指针所指向的数据传给函数使用(称为传入参数),也可以由函数填充指针所指的内存空间,传回给调用者使用(称为传出参数)
内存管理
内存分配方式有三种:
(1) 从静态存储区域分配。 例如全局变量,static 变量。
(2) 在栈上创建。 函数内局部变量的存储单元都可以在栈上创建
(3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc 或new 申请任意多少的内存,程序员自己负责在何时用free 或delete 释放内存。
常见的内存错误的解决方案
用malloc 或new 申请内存之后,应该立即检查指针值是否为NULL。防止使用指针值为NULL 的内存。
不要忘记为数组和动态内存赋初值。
避免数组或指针的下标越界
动态内存的申请与释放必须配对,防止内存泄漏
用free 或delete 释放了内存之后,立即将指针设置为NULL,防止产生“野指针”;
第二:C语言实际编程
关于vim 和GCC和gdb调试工具的使用
简单的makefile编写规范
自己动手编写了5套练习对C语言的基础知识在编程中不断的应用,因此C的基础编程有了很大的提高。
第三:数据结构
链接表是线性表的链接存储表示
单链表 静态链表 循环链表 双向链表
学习了链表的操作 :建立新链表 链表的插入 删除 查找 显示
并且根据链表的操作,写了通信录项目,基本把链表所有操作熟悉了一遍。综合了指针的用法和以前学习的makefile应用到了其中。
第四:C语言的系统编程
Linux_C函数库中常用函数原型:
isascii(测试字符是否为ASCII码字符)
定义函数int isascii(int c);
atof(将字符串转换成浮点型数)
定义函数double atof(const char *nptr);
free(释放原先配置的内存)
定义函数void free(void *ptr);
malloc(配置内存空间)
定义函数void * malloc(size_t size);
关于进程线程的操作
关于管道、套接字、信号、消息队列、共享内存、信号量等通信方式
产生死锁的原因和必要条件
锁的创建、加锁、解锁
Linux 网络程序设计
TCP 模型
第 五 :数据库
基本概念 数据库理论 嵌入式数据库 sqlite3简介
创建数据表
CREATE TABLE IF NOT EXISTS table_test (id INTEGER primary key , name
VARCHAR(50),data BLOB);
销毁数据表
DROP TABLE IF EXISTS table_test;
向数据表中插入数据记录
INSERT INTO table_test (id,name) VALUES (2,’zhangsan’);
删除一条数据记录
DELETE FROM table_test WHERE id>=1000;
更新数据记录
UPDATE table_test SET name=’lisi’ WHERE id=10;
查询数据记录
SELECT * FROM table_test WHERE id<2000 AND id>=30 ORDER BY id;