美文网首页
C高级学习12.22

C高级学习12.22

作者: 赋闲 | 来源:发表于2016-12-22 21:05 被阅读0次

添加链表节点
1.数据域初始化
2.将要插入的节点链接到链表上
3.重新更改指针的指向

栈:
局部变量,程序运行期间的变量分配大部分是在栈空间分配,函数结束后,系统自动回收资源,空间比较小,先进后出
堆:
堆空间比较大,由程序员自由支配,只能手动申请和释放,
malloc:申请的空间在堆上!
malloc和free要成对出现,防止出现堆空间不足的现象,即申请的空间要释放,存在堆空间的数据不会随函数结束而自动释放。指针存储于堆。后进先出

断错误:
指针:
常量指针/NULL/野指针
数组:
数组的越界访问,访问到非法区域或者修改了其它变量
其它:
内存不足
双释放
内存泄漏

栈和队列
栈:先进后出,后进先出
压栈:push()
出栈:pop()
每压入一个元素,top指针向上移动一位(当top处于栈顶时满栈/栈底时空栈) 头插头删
队列:先进先出,后进后出,
尾插头删

define LEN sizeof(STU)

宏后面一般不加分号

undef LEN

取消宏定义

条件预编译
测试代码段

#if :表达式0/1//非零为真,则执行
#elif
#else
#endif

gcc 的编译细节
预处理
gcc -E
.i 目标文件去除注释,宏
编译
gcc -S
.s 汇编语言
汇编
gcc -C
.o 01指令,不可执行
链接---库文件
将多个目标文件组织为可执行程序 01程序

文件
-:普通文件
d:目录文件
l:链接文件
p:管道文件
b:块设备文件
c:字符文件

perror

(1)文件系统
文件信息:索引节点(index)
文件操作:文件描述符(fd)

文件描述符的fd最大值
早期的Unix系统 1024
Linux系统: 65535

(2)文件的定义
一组相关数据的有序集合,称为文件。
(3)文件的打开和关闭
打开:fopen(文件名,属性);
关闭:fclose(文件指针);
文件使用完成后要关闭,否则会造成文件数据丢失,内存混乱。

文件指针
文件指针结构体:FILE -------->#include<stdio.h>
包含了文件的基本信息
FILE *指针变量名;
文件名可以是存在,也可不存在,视属性而定,文件名可以加路径
属性:
读 r 写 w 追加 a
+:可读写
t:文本文件
b:二进制文件
rt, wt, at, rb, wb, ab, rt+, wt+, at+, rb+, wb+, at+,
rt+/wt+:可读写
rt/rb:可读
wt/wb:只写,带w属性的,可以写文件,若文件已存在,则清除文件重新写;若不存在,则以给定文件名创建文件;
r:带r属性的,文件必须存在!!

(4)文件的操作
fgetc()/fputc():字符读写函数
fgets()/fputs():字符串读写函数
fscanf()/fprintf():格式化读写函数*****
fread()/fweite():块读写函数*****
注:
在C89标准中,fread()/fwrite()有BUG!!
文件结束标志:EOF(end of file)

5.fgetc()/fputc()
fgetc(文件指针)://从给定文件中读取一个字符
fputc(字符,文件指针)://添加一个字符到指定文件中

fgets()/fputs()
fgets(字符数组/字符串常量/指针,size,fp);
从文件fp中获取字符串,获得size-1个长度,在末尾加'\0'
碰到EOF或者换行符结束
fputs(字符数组/字符串常量/指针,fp)

stdin: 标准输入-------》键盘
stdout: 标准输出-------》终端
stderr: 错误输出-------》终端

fseek(文件指针,位移量(long型L结尾),起始点)

fscanf(fp,"格式",参数列表);//按格式写文件
<----------------
fprintf(fp,"格式",参数列表);//按格式读文件
-------------------->

fread()/fwrite()//块读写文件
fread(address,size,count,fp);//读
<---------------
fwrite(address,size,count,fp);//写
------------------>
address:地址
size:大小---->sizeof()/或者具体数值
count:读写的块数(默认为1)
fp:文件指针

相关文章

  • C高级学习12.22

    添加链表节点1.数据域初始化2.将要插入的节点链接到链表上3.重新更改指针的指向 栈:局部变量,程序运行期间的变量...

  • C/C++学习路线图--C高级编程

    黑马程序员的C/C++学习路线图大纲中第二阶段的学习是C高级编程的学习:主要介绍了C/C++学习路线图的C高级编程...

  • C++ 异常及处理详解,都是重点

    C高级是学习C的进阶阶段,而且对于c高级来说,c++异常也是必须要学习的,而且对于c++异常来说有很多种,是需要自...

  • C语言编程入门新手学习精华:这样学习C语言最有效

    1、 C语言已死吗? 本资料描述的是使用C语言的高级技巧,力求将你的C语言能力由“基础”提升为“高级”。但是学习态...

  • C++面向对象高级编程(博览网)

    断断续续学习C++也有20天了,“学”完了C++面向对象高级编程-上,C++面向对象高级编程-下“学”了大部分,学...

  • iOS - 老生常谈内存管理:导读

    导读 这段时间通过以下资料学习了 Objective-C 的内存管理: 《Objective-C 高级编程:iOS...

  • c高级自我学习(1)

    1 编译预处理和宏定 #undef指令删除前面定义的宏定义。 无参宏定义:宏名中没有参数。 1,宏定义中宏名用来表...

  • C++学习四:高级

    STL容器相关 一、vector向量 二、stack栈 三、队列queue 四、list 五、set 六、谓词 七...

  • 2019-01-02

    一、学习c#,认识几个概念: C#,是一门开发语言,由c、c++、java发展而来的高级语言 .Net 是微软用来...

  • 12.22学习笔记

    今天继续学习ug制图,下周就要学习更难更深入的知识啦,这个基础学习就要接近尾声啦

网友评论

      本文标题:C高级学习12.22

      本文链接:https://www.haomeiwen.com/subject/llshvttx.html