摘要:
原文链接:http://www.orlion.ga/1015/ 一、进程 每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,linux内核的进程控制块是task_struct结构体,其中有: 进程id。系统中每个进程有一个唯一的id,在C语言中用pid_t类型表示,是一个非负正是 进 阅读全文
摘要:
原文链接:http://www.orlion.ga/977/ 一、数值字符串转换函数 atoi把一个字符串开头可以识别成十进制整数的部分转换成int型,例如atoi(" -123abc")返回-123(字符串开头可以有空格)。如果字符串开头没有可识别的整数返回0,而atoi("0abc")也返回0。 阅读全文
摘要:
原文链接:http://www.orlion.ga/936/ 1、fopen/fclose 操作文件之前要先用fopen打开文件,操作完毕要用fclose关闭文件。打开文件就是在操作系统中分配一些资源用于保存该文件的状态信息,并得到该文件的标示,以后用户程序就可以用这个标示对文件做各种操作,关闭文件 阅读全文
摘要:
原文链接:http://www.orlion.ga/932/ 1、初始化字符串 memset函数把s所指的内存地址开始的n个字节都填充为c的值。通常c的值为0,把一块内存区域清零,例如定义char buf[10];,如果它是全局变量或静态变量,则自动初始化为0(位于.bss段),如果它是函数的局部变 阅读全文
摘要:
原文链接:http://www.orlion.ga/916/ 一、指针的基本操作 例: "&"是取地址符,&i表示取变量i的值,int *pi = &i;表示定义一个指向int型的指针变量pi,并用i的地址来初始化pi。全局变量只能用常量表达式初始化,如果定义int p = i;就错了,因为i不是常 阅读全文
摘要:
原文链接:http://www.orlion.ga/924/ 一、指针与const限定符 const限定符与指针结合起来常见的情况有一下几种: 这两种写法是一样的,a是一个指向const int型的指针,a所指向的内存单元不可改写,所以(*a)++是不允许的,但a可以改写,所以a++可以。 a是一个 阅读全文
摘要:
原文链接:http://www.orlion.ga/913/ 一、数组 定义数组: 赋值: 未赋初值的元素用0初始化。如果定义数组的同时初始化它,也可以不指定数组的长度: 编译器会根据Initializer有三个元素确定数组的长度为3。 虽然数组与结构体有很多相似之处,但是数组不能互相赋值。如下是错 阅读全文
摘要:
原文链接:http://www.orlion.ga/816/ 一、基本规则 对于一个拥有多个文件的c项目,编译时可能是这样的指令: 如果编译之后又对stack.c进行了修改,则又要重新把所有的源文件编译一遍,即使main.c和那些头文件都没有修改也要跟着重新编译,一个大型项目往往上千个源文件组成,全 阅读全文
摘要:
原文链接:http://www.orlion.ga/776/ 用C写的程序效率可能不如汇编,而且有些平台相关的指令必须手写,例如x86是端口I/O,而c语言就没有这个概念,所以in/out指令必须用汇编来写。 gcc提供了一种扩展写法可以在C代码中试用内联汇编,最简单的格式是__asm__("ass 阅读全文
摘要:
原文链接:http://www.orlion.ga/781/ 一、 多目标文件的链接 假设有两个文件:stack.c: 上边这个文件实现了栈。main.c: 这个文件是使用了栈,编译:gcc main.c stack.c -o main,也可以分步编译: 用nm命令查看目标文件的符号表,会发现mai 阅读全文