C
文章平均质量分 85
渣渣彪
我系渣渣彪,系兄弟就来砍我
展开
-
const 和 pointer
一般的:const对pointer的修饰有两种:const type * p/type const * p:表示指针指向的变量的值不能改变,无论指针改变为指向哪一个变量 type * const p:表示指针的值不能改变,不能指向其它变量值得注意的是数组,如果一个const指针指向数组,那么这个数组都是不能通过这个指针改变的。因为无论这个指针指向哪个内存地址,它都是一个const指针,...原创 2018-09-18 15:33:50 · 478 阅读 · 0 评论 -
C 链接
链接器基础:编译器一般由以下分程序组成:编译驱动器(compiler driver):控制程序 预处理器 语法分析器 语义分析器 代码生成器 汇编器 优化器 链接器编译器创建一个输出文件,包含了可重定地址的对象,这些对象是和源文件相对应的数据和机器指令一个对象文件不是直接可执行的,需要首先被链接器处理。链接器找到main程序作为入口,将符号绑定到内存地址,合并所有的对象...原创 2018-12-06 09:09:56 · 643 阅读 · 0 评论 -
data structure alignment(数据对齐)
概述:数据对齐指数据在计算机内存中排放和获取的方式。包含三个方面:数据对齐(data alignment)、数据结构填充(data alignment)、打包(packing)如果数据是自然对齐的话,CPU读写会更高效。自然对齐指数据地址是数据大小的倍数。为保证自然对齐,可能会在结构的开头或结尾进行一些填充定义:内存地址对齐:一个内存地址a被称为n-byte对齐,如果a是n的倍数,...原创 2018-11-30 15:02:22 · 687 阅读 · 0 评论 -
C语言运行时数据结构
段(Segment):对象文件/可执行文件:SVr4 UNIX上被称为ELF(起初"Extensible Linker Format", 现在"Executable and Linking Format")文件。BSD UNIX上被称为a.out。这些格式都具有段的概念section是存放特定类型二进制文件区域,section是ELF文件的最小组织单元,段通常由多个section组成...原创 2018-11-30 13:30:14 · 201 阅读 · 1 评论 -
C语言传参的类型匹配
有一个这样的问题:形参const char *p和实参char *c可以匹配 形参const char**p和实参char**c不可以匹配注:argument和parameter:严格而言,parameter指形参,argument指实参ANSI C:"每个实参都应该有一个类型,以便将其值赋给一个对象,这个对象具有相对应形参的类型的非限定版本"含义:传参相当于赋值,函数的形参将...原创 2018-11-19 09:38:03 · 200 阅读 · 0 评论 -
C语言声明语句
设计理念:C语言的一个设计理念就是声明变量和使用变量的形式应该是一致的优点:声明变量和使用变量时的运算符优先级是相同的缺点:运算符的优先级是C语言过度解析的部分之一术语:变量声明中使用到的符号的术语:(并不是所有的组合是合法的)数量 名称 举例 0或更多 指针(pointer) * 一个 说明符(declarator) i...原创 2018-11-14 17:38:28 · 1320 阅读 · 0 评论 -
C语言实现简化的正则表达式
语法:正则表达式和待匹配字符串都是一行 “^” 标记正则表达式的开始 “$” 标记正则表达式的结束 “*” 匹配前面的子表达式零次或多次 “+” 匹配前面的子表达式一次或多次 “?” 匹配前面的子表达式零次或一次, 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,表示该匹配模式是非贪婪的,而不是匹配前面的子表达式 “{n}” n是一个非负整数。匹...原创 2018-10-31 18:01:30 · 1104 阅读 · 2 评论 -
C实现JAVA类似ArrayList的静态链接库
文件结构:ArrayList.h:头文件 ArrayList.c:实现头文件中的功能 ArrayListTest.c:测试ArrayList.h头文件的基本框架:#ifndef _ARRAYLIST_H#define _ARRAYLIST_H// 头文件体#endif头文件中应包含结构体定义,必要的宏定义,需要直接在其他文件中使用的函数的定义Java中的Arra...原创 2018-10-11 17:22:13 · 136 阅读 · 0 评论 -
C语言Huffman压缩和解压
符号表结构体:struct node{ // 字符串形式存储的Huffman编码 char code[MAX_CODE_LENGTH]; // 这个字符在文件中出现的次数 long count; // 在生成Huffman树的时候是否已经被当作叶子节点 int checked; // 符号 char sym; // l...原创 2018-09-26 18:36:08 · 2517 阅读 · 16 评论 -
C语言数组和指针是不同的
有一个这样的错误:在一个文件中定义:int mango[100]; 在另一个文件中声明:extern int *mango; 将会产生错误定义和声明的区别:在C中,任何对象都有且只有一个定义,但是可以有多个声明definition:只出现一次 为一个对象指定类型,分配存储空间。用于创建一个新的对象 declaration:可以出现多次 描述这个对象的类型。用于引用...原创 2018-09-19 18:17:36 · 408 阅读 · 0 评论 -
C语言手册-read
名称:pread,read-从文件读语法:#include <unistd.h>ssize_t pread(int fildes, void *buf, size_t nbyte, off_t offset);ssize_t read(int fildes, void *buf, size_t nbyte);描述:read()函数会尝试从fildes指定的文...翻译 2018-12-14 18:00:51 · 1551 阅读 · 1 评论