c语言进阶
sdu程序猿
这个作者很懒,什么都没留下…
展开
-
fork()和逻辑运算符的混合使用
fork()的使用和逻辑运算的混合使用。fork() || fork(); 生成多少进程?解析:1fork() ||2 fork();fork()用来创建进程,并返回值,子进程返回0,父进程返回子进程的进程号;对两个fork进行编号。对于逻辑运算符或“||”,先计算左边表达式,如果是非0,则后边的表达式无需计算;如果是逻辑运算符与“&&”,左边表达式是0,则后边表达式无需计算;如果原创 2014-09-02 09:51:15 · 542 阅读 · 0 评论 -
VS2012 C语言dll文件生成和C#调用
用C#做Web项目时,需要使用C实现的加密算法,将加密算法封装成dll文件以便在C#中调用,第一次使用dll,做个简单记录。1. 在需要调用的函数前面添加 __declspec(dllexport)。使2.用命令行生成dll,使用VS2012的命令行工具,“开始”中找到“Microsoft Visual Studio 2012”,然后“Visual StudioTool原创 2015-06-16 20:37:13 · 1849 阅读 · 0 评论 -
VS将已有的项目生成lib静态库并使用
首先,建一个空项目,在其中添加两个文件,test.h和test.c。test.hint add(int, int);test.c#include "test.h"int add(int a, int b){ return (a + b);}1、右键单击项目,选择属性,在配置属性里,将配置类型改为静态库(.lib),点击确定。2、右键点击项目,生成。3、右原创 2013-04-01 23:07:27 · 3607 阅读 · 1 评论 -
printf的(i++)和(++i)详解(编译器不同有差异)
printf的入栈顺序和打印显示,一直是比较绕的东西,稍微总结了一下,发现有些地方和之前理解的是有出入的,记录一下,供以后自己查看。第一种情况:int i = 1;printf("%d %d\n", i++, i++);按从右到左的顺序,先压栈,首先将i = 1,入栈,然后i=2,将i=2入栈,i=3,因此输出结果是2 1 ,这是按大家的理解的比较正常的方式。记下来看一下在vs201原创 2015-08-06 09:34:07 · 3945 阅读 · 1 评论 -
c语言内存对齐
记录平常所学,以便回顾。c语言中存在着内存对齐问题,在struct存储中尤为明显,这里先介绍一种情况,以后接着补充。typedef unsigned char u8;typedef unsigned short u16;typedef unsigned long u32;typedef unsigned long long int u64;struct s1{ u8原创 2013-03-28 21:54:57 · 647 阅读 · 0 评论 -
c语言限制访问链表元素的一种机制
自己记录下的一些心得,以便自己以后能够回顾。定义两个自己的链表节点,stIn和stOut。 list_head即为Linux中List的使用。链表stIn保存了1-16个节点(不包括头),其中a和b的值依次为1到16。遍历链表stIn的list_head,即可得到每个节点的a和b的值。 out_head = (struct stOut*)(&in_head);此句非常重要原创 2013-03-28 12:57:13 · 544 阅读 · 0 评论