代码改变世界

高级声明------定义一个函数指针数组指针

2014-02-14 21:55 by 放作夥, 392 阅读, 0 推荐, 收藏, 编辑
摘要:#include #include char* fun1(char* p){printf("%s\n",p);return p;}char* fun2(char* p){printf("%s\n",p);return p;}int main(){char* (*a[3])(char* p);//定义函数指针数组char* (*(*pf)[3])(char* p);//定义函数指针数组指针,其实没什么大用,只是以防变态的面试题pf=&a;a[0]=fun1;a[1]=fun2;pf[0][0]("fun1");pf[0][1]( 阅读全文

C错题集锦

2014-02-14 21:42 by 放作夥, 196 阅读, 0 推荐, 收藏, 编辑
摘要:1.野指针#includestructstudent{char* name;//分配结构体内存时name未初始化,极易出错int score;}stu,*pstu;int main(){pstu=(struct student*)malloc(sizeof(struct student));//隐含name野指针strcpy(stu.name,"Jimy");//野指针,出错stu.score=99;return0;}2.按值传递#include#includevoid GetMemory(char*p,int num){//实际上只是让指针副本_str指向一块堆内存,正确 阅读全文

C中改变指针的指向

2014-01-15 21:19 by 放作夥, 875 阅读, 0 推荐, 收藏, 编辑
摘要:交换两个指针的指向若用函数调用来实现的话必须用到二级指针,因为参数传递是值传递,相当于只把两个指针副本的指向交换了一下,而c++中有引用,相当于按址传递,比c方便.若不用函数的话一级指针也可以.1、一级指针#include int main(){int a,b;int *p1=&a,*p2=&b;printf("%p\t%p\n",p1,p2);int *tmp;tmp=p1;p1=p2;p2=tmp;printf("%p\t%p\n",p1,p2);return 0;}2、二级指针#include void swap(int**x,in 阅读全文

/dev/zero

2013-12-13 11:56 by 放作夥, 766 阅读, 0 推荐, 收藏, 编辑
摘要:在类UNIX操作系统中,/dev/zero是一个特殊的文件,当你读它的时候,它会提供无限的空字符(NULL,ASCIINUL, 0x00)。其中的一个典型用法是用它提供的字符流来覆盖信息,另一个常见用法是产生一个特定大小的空白文件。BSD就是通过mmap把/dev/zero映射到虚地址空间实现共享内存的。下面的方法可以用于破坏分区数据:# 请不要执行下列代码,除非你试图破坏分区上的全部数据! dd if=/dev/zero of=/dev/ 创建一个名为'foobar'大小为1MB的文件,以"0"填充:dd if=/dev/zero of=foobar co 阅读全文

define的高级用法

2013-12-04 20:16 by 放作夥, 2108 阅读, 0 推荐, 收藏, 编辑
摘要:#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP)\do{ if (EXP)\fprintf(stderr, "Warning: " #EXP "\n"); }\while(0)那么实际使用中会出现下面所示的替换过程:WARN_IF (divider == 0);被替换为do {if (divider == 0)fprintf(stderr, "Warning" "divid 阅读全文

(转)Linux ./configure --prefix命令

2013-12-04 19:21 by 放作夥, 289 阅读, 0 推荐, 收藏, 编辑
摘要:源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install),具体的安装方法一般作者都会给出文档,这里主要讨论配置(configure)。Configure是一个可执行脚本,它有很多选项,使用命令./configure –help输出详细的选项列表,如下:-bash-3.00# ./configure --helpUsage: configure [options] [host]Options: [defaults in brackets after descriptions]Configuration:--cache-file=FILE c.. 阅读全文

(转)linux下tty,控制台,虚拟终端,串口,console(控制台终端)详解

2013-10-31 20:42 by 放作夥, 995 阅读, 0 推荐, 收藏, 编辑
摘要:1。终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念.一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有字符哑终端和图形终端两种.控制台是另一种人机接口, 不通过终端与主机相连, 而是通过显示卡-显示器和键盘接口分别与主机相连, 这是人控制主机的第一人机接口.个人计算机只有控制台,没有终端,但可以在串口上连一两台字符哑终端. 但是linux偏要按POSIX标准把个人计算机当成小型机来用,那么就在控制台上通过getty软件虚拟了六个字符哑终端(或者叫控制台终端tty1-tty6)(数量可以在/etc/inittab里自己调)和一个图 阅读全文

内核驱动模块的Makefile模板

2013-10-24 13:28 by 放作夥, 1040 阅读, 0 推荐, 收藏, 编辑
摘要:单文件Makefileifneq ($(KERNELRELEASE),)obj-m := hello.oelseKDIR := /lib/modules/2.6.18-53.el5/buildall: make -C $(KDIR) M=$(PWD) modulesclean: rm -f *.ko *.o *.mod.o *.mod.c *.symversendif多文件的Makefileifneq ($(KERNELRELEASE),)obj-m := mymodule.omymodule-objs := file1.o file2.o file3.oelseKDIR := /lib/mo 阅读全文

inode是什么

2013-10-22 22:26 by 放作夥, 802 阅读, 0 推荐, 收藏, 编辑
摘要:一.非编程概念的inode储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。inode的内容inode包含文件的元信息,具体来说有以下内容: * 文件的字节数 * 文件拥有者的User ID * 文件的Group ID * 文件的读、写、执行权限 * 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。 * 链接数,即有多少文件名指向这个inode * 文件数据block的位置除了文件名以外的所有文件信息,都 阅读全文

写时复制(copy-on-write)

2013-10-12 22:27 by 放作夥, 272 阅读, 0 推荐, 收藏, 编辑
摘要:传统的fork()系统调用直接把所有的资源复制给新创建的进程。这种实现过于简单并且效率低下,因为它拷贝的数据或许可以共享(This approach is significantly naïve and inefficient in that it copies much data that might otherwise be shared.)。更糟糕的是,如果新进程打算立即执行一个新的映像,那么所有的拷贝都将前功尽弃。Linux的fork()使用写时拷贝(copy-on-write)页实现。写时拷贝是一种可以推迟甚至避免拷贝数据的技术。内核此时并不复制整个进程的地址空间,而是让父 阅读全文
上一页 1 ··· 6 7 8 9 10 11 12 13 下一页