苏嵌学习小结

 

关于暑假之前的学习总结,我还是以复习的形式进行总结。

第一:关于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  GCCgdb调试工具的使用

简单的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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值