c语言
几点了老狼
这个作者很懒,什么都没留下…
展开
-
C语言——声明
分析C语言的声明(类)结构体struct s_tag {int a[100]};struct s_tag orange,lime,lemon;struct s_tag twofold(struct s_tag s){int j;for(j = 0;j < 100;j++)s.a[j] *= 2;return s;}void main(){int i;for(i = 0;i <原创 2017-05-03 20:05:40 · 377 阅读 · 0 评论 -
C语言——程序运行时数据结构
运行时的数据结构段目标文件和可执行文件有几种不同格式,在大多数Svr4实现中采用一种叫做ELF(原意位”可扩展链接器格式“、现在代表 ”可执行文件和链接格式“)。其他系统中可执行文件格式是COFF(普通目标文件格式)。所有不同格式具有一个共同概念”段(segments)“。就目标文件而言它们是二进制文件中简单的区域,里面保存了某种特 定类型(如符号表条目)相关信息。术语section是ELF原创 2017-05-03 20:11:14 · 788 阅读 · 0 评论 -
C语言——指针与数组区别
数组与指针的讨论数组定义并不等同于指针的外部声明!声明?定义?定义 只能出现在一个地方 确定对象的类型并分配内存,用于创建心得对象,如:int my_array[100];声明 可以多次出现 描述对象的类型,用于指代其他地方定义的对象(例如在其他文件里),如:extern int my_array[]extern对象声明告诉编译器对象的类型和名字,对象的内存分配则在别处进行原创 2017-05-03 20:21:01 · 372 阅读 · 0 评论 -
C语言——内存的思考
对于内存的思考数据段和堆就像个堆栈段能够根据需要自动增长一样,数据段页包含了一个对象,用于完成这个任务,这就是堆(heap)。堆区域用于动态分配的存储,也就是通过malloc()函数获得内存,并通过指针访问。堆中所有的东西都是匿名的, 不能按照名字直接访问,只能通过指针间接访问。从堆中获取内存的唯一办法就是通过调用malloc(以及同类的calloc、realloc等)库函数。 callo原创 2017-05-03 20:23:47 · 295 阅读 · 0 评论 -
C语言——链接的思考
对于链接的思考 静态链接 750Kb 506Kb ________________> libc.a 产生:a.out 1Kb /hello.o ----| \_________原创 2017-05-03 20:24:58 · 314 阅读 · 0 评论 -
Linux下各种错误处理
今天看《Unix环境高级编程》的时候,书中IO操作中有用到一个函数err_sys开始还以为这是个unix中IO操作专用的错误处理函数,后来用grep工具找了半天在这本书的源码中发现了它的定义: 当然我觉得没太大必要封装的这么完美(主要是我懒),但是该有的错误处理是一定要有的,不然你调试的时候会哭,别人改你的代码的时候会在心里骂死你的,总之想写出一个健壮的程序,一些参数检测、错误处理等等是一定一定要原创 2017-07-22 21:29:48 · 670 阅读 · 0 评论 -
补充:errno变量在内核中的定义
以下是errno在linux内核源码中的/include/uapi/asm-generic/目录下的errno.h和errno-base.h中的宏定义以及一些说明,想自己看源码的话,我的是在github上clone的。#define EPERM 1 /* Operation not permitted */#define ENOENT 2 /* No such fil原创 2017-07-23 15:23:02 · 649 阅读 · 0 评论 -
Linux下socket套接字一些重要结构体
最近搞wifi小车用到socket时候发现之前好多东西搞混了都忘了,在看书的时候也是对各种长得很像的结构体一脸蒙蔽,经常要回去翻头文件里的定义(有时候还是不要太相信盗版书哈哈)。 有时候一些头文件进不去,教大家一个方法gcc -E prog.c -o prog.i程序预处理之后所有头文件都展开了,这时候你想搜索什么定义直接grep或者在vim里面搜索也可以。在这里还是整理一下这些结构体和其定义吧。原创 2017-07-24 14:42:02 · 687 阅读 · 0 评论