
C
覺醒的腿毛
码农中的战斗农!!!
展开
-
C语言指针的操作
如果想要表达,将constants_pool->info+i的位置存放一个u8类型的数据这面这种写法*(u8*)(constant_pool->info+i)意思是constant_pool->info+i的位置先强制转化为一个u8类型的地址,然后再寻址,往里面放数据。*(u8*)&(constant_pool->info[i])这一原创 2014-12-31 00:38:40 · 1622 阅读 · 0 评论 -
CLHLock的C语言实现
#include #include #include #include #define FALSE 0#define TRUE 1static int shareddata = 50;struct qnode* tail;struct qnode q;pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;原创 2015-03-30 20:59:22 · 749 阅读 · 0 评论 -
C语言的异常处理——setjmp
C语言实现类似JAVA的异常处理,需用用到标准库中的setjmp.h。 在导入了setjmp.h之后,我们就可以利用里面定义的类型jmp_buf来设置锚点,也就是可能会出现异常的位置,相当于java的try。 jmp_buf结构体里面存放了寄存器的状态,setjmp(buf)在第一次执行的时候一定是返回0,int setjmp(jmp_buf envbuf)原创 2015-01-17 12:33:36 · 717 阅读 · 0 评论 -
对于C语言头文件里面extern的理解
如果想在一个C文件里面引用另外一个C文件里面的变量,怎!么!办?我们的做法是将变量在H文件中声明为ertern,然后在其他文件中导入这个H文件。这里需要注意的是,如果导入了H文件,那就不能声明同名的变量了。另外,H文件中的声明变量必须是在别的文件里面已经声明过的。这里特别强调变!量!如上图。左边是H文件,里面声明的一个ppp变量。在右边的文件里面引入H文件。但是!这原创 2014-12-29 12:42:34 · 4049 阅读 · 0 评论 -
标记联合体
对于typedef的相互嵌套的问题,把哪个放在前面都不行。解决办法。在最先面先声明一下。这样在Exp_time里面编译器就知道Exp是什么意思了。用编辑联合体可以做出类似java的多态。也就是可以用一个基类表示所有可能的子类。上面的这个关系也是用Exp表示一种抽象的运算, 而add和times是两个子类,是具体的。原创 2015-01-29 13:16:32 · 1015 阅读 · 0 评论 -
可变参数函数stdarg
#include #include int add(int pre,...){ va_list arg_ptr; int sum = pre; int argValue; va_start(arg_ptr,pre); do { argValue=va_arg(arg_ptr,int); sum+=arg原创 2014-12-18 20:31:38 · 499 阅读 · 0 评论 -
函数指针的使用
1,声明格式type (* name) (type arg1,...)与函数声明不同的地方,就是把夲身的函数名换成(*name)。下面的例子用了一个typedef化简的声明的过程。funcp2夲身的声明应该是int (*funcp2) (int a, int b)2,赋值函数指针在使用前一定要先赋值。将函数名(也就是函数的地址)赋值给函数指针。3,调用调用可以有两种原创 2015-01-08 19:01:21 · 612 阅读 · 0 评论 -
FILE的操作
fread原型:size_t fread(void *buffer, size_t size, size_t count, FILE *stream);从一个文件流中读数据,读取count个元素,每个元素size字节.如果调用成功返回count.如果调用成功则实际读取size*count字节fseekint fseek( FILE *stream, long offse原创 2014-12-18 10:05:15 · 459 阅读 · 0 评论 -
C杂碎
在Linux下输出long long类型。printf("%lld", l);原创 2015-03-14 20:09:01 · 627 阅读 · 0 评论