摘要: #include #define min(a,b) ((a)<=(b)?(a):(b))int main (int argc, char **argv){ char *p = "abcdefgh"; printf("%c\n",min(*p++,'c')); //宏被扩展为 ( *p++ <= c ... 阅读全文
posted @ 2014-11-19 22:31 zhanbiqiang 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:1). 并行设备的硬件寄存器(如:状态寄存器)2)... 阅读全文
posted @ 2014-11-19 22:31 zhanbiqiang 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 1.进程有哪几种状态、状态转换图及导致转换的事件?状态:(1).就绪态:进程已获得 处理机外的所需资源,等待分配处理机资源(时间片),只要分配到即可执行。在某一状态,可能有若干进程处于该状态。(2).运行态:占用处理机资源运行处于此状态的进程的数目小于等于cpu 的数目。(3).阻塞态:由于进程等待... 阅读全文
posted @ 2014-11-19 22:31 zhanbiqiang 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 编写一个函数,实现将一个32位int 型数据的二进制高位到低位的逆变,例如:1101 0101 变成 1010 1011 。例举两种方法:方法1. 再定义一个变量,通过移位运算和位与将高位到低位实现逆序。但不足之处是效率低,需要进行332次移位和运算。int func1(unsigned int u... 阅读全文
posted @ 2014-11-19 22:31 zhanbiqiang 阅读(2654) 评论(0) 推荐(0) 编辑
摘要: 1.要对绝对地址0x10 0000 赋值,该怎样做?*( (unsigned int*)0x10 0000 ) = 1234;通过这条语句,我们将1234存放到了0x10 0000 的地方。2.如果想让程序跳转到绝对地址0x10 0000去执行,该怎么办?首先要将绝对地址0x10 0000 转换为函... 阅读全文
posted @ 2014-11-19 22:30 zhanbiqiang 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 10月30号中午到达北京西,乘地铁到中关村,郭兄来接我到中科院实习生住宿公寓,下午整理好行李,出去吃了晚餐(话说真贵 一盖饭就15,不过味道不错)就早睡了。北京给我的感觉是人才济济,人们生活节奏都较快。北京的雾霾我还能接受,气温还好(两件衣服足够)。好了,我的实习就要开始了。今早,来到单位,分配了电... 阅读全文
posted @ 2014-11-19 22:29 zhanbiqiang 阅读(1076) 评论(0) 推荐(0) 编辑
摘要: #include union { struct{ unsigned char c1:3; unsigned char c2:3; unsigned char c3:2; }s; unsigned char c;}u;int main (int argc, char **argv){ u.c=100;... 阅读全文
posted @ 2014-11-19 22:28 zhanbiqiang 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。指针可以随时指向任意类型的内存块。 (1)修改内容上的差别 char a[] = “hello”; //它们有各自的内存空间;a[0] = ‘X’;char *p = “world”; // 注意p 指向常量字符串p[0] = ‘X’; // 编译器不能发现该错误,运行时错误 (2) 用运算符sizeof 可以计算出数组的... 阅读全文
posted @ 2014-11-19 22:22 zhanbiqiang 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 一、预备知识—程序的内存分配 1. 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)... 阅读全文
posted @ 2014-11-19 22:21 zhanbiqiang 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 1.堆栈溢出一般是由什么原因导致的? 1.没有回收垃圾资源 2.层次太深的递归调用 2.不能做switch()的参数类型是: switch的参数不能为float、double型。必须是整形或能隐式转换为整形的数据。 3.const与#define 相比,有何优点? Const作用:定义常量、修饰函数参数、修饰函数返回值三个作用。被Const修饰的东西都受到强制保护,可以预防意外... 阅读全文
posted @ 2014-11-19 22:20 zhanbiqiang 阅读(150) 评论(0) 推荐(0) 编辑
摘要: #include #include typedef short type; //进行二进制转换的数据类型 /********************************************************************************* Description:本函数实现 将type类型的数据以二进制形式输出* Input Args:待输出的原始数据* ... 阅读全文
posted @ 2014-11-19 22:19 zhanbiqiang 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 如何把一个单链表进行反转? 方法1:将单链表储存为数组,然后按照数组的索引逆序进行反转。 方法2:使用3个指针遍历单链表,逐个链接点交替使用指针改变链表的指向进行反转。 方法3:从第3个节点到第N-1个节点,依次逐节点插入到第1个节点(head节点)之后,再将第N个节点指向head(成环),然后将此时head的下一个节点设为head,最后将原head指向NULL。 方法4: 递归(没搞... 阅读全文
posted @ 2014-11-19 22:18 zhanbiqiang 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 2014年10月31日来到北京中科院计算所无线中心部门实习,本打算踏踏实实地好好把技术弄好的,苦于错过了关键的技术攻克阶段,项目组长和好几位项目成员都出差未归,在完成带我的师兄交代的学习任务后,真的不知道怎么围绕项目深入去(各种保密措施,看不到文档)。好吧,我就利用空闲时间准备笔试,开始关注北京校招动态。 11月10日,投放在智联上的简历被”太一星晨”HR看到,她邀请我13... 阅读全文
posted @ 2014-11-19 22:14 zhanbiqiang 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 使用过开源C/C++项目的同学都知道,标准的编译过程已经变成简单的三部曲:./configure /make/make install,使用起来很方便,不像平时自己写代码,要手写一堆复杂的makefile,而且换个编译环境,makefile还需修改。因此,本文将介绍如何使用 autoconf 和 automake 两个工具来帮助我们自动地生成符合自由软件惯例的makefile了。 一.执行步骤... 阅读全文
posted @ 2014-11-19 22:13 zhanbiqiang 阅读(511) 评论(0) 推荐(0) 编辑