2012年4月4日
摘要: C++中const总结一:对于基本声明1.const int r=100;//标准const变量声明加初始化,因为默认内部连接所以必须被初始化,其作用域为此文件,编译器经过类型检查后直接用100在编译时替换.2.extend const int r=100;//将const改为外部连接,作用于扩大至全局,编译时会分配内存,并且可以不进行初始化,仅仅作为声明,编译器认为在程序其他地方进行了定义.3.const int r[]={1,2,3,4};struct S {int a,b;};const S s[]={(1,2),(3.4)};//以上两种都是常量集合,编译器会为其分配内存,所以不能在编 阅读全文
posted @ 2012-04-04 15:00 wanghetao 阅读(460) 评论(0) 推荐(2) 编辑
摘要: 今天看《程序员面试宝典》一书(为了应付将要到来的微软笔试),看到了sizeof(string)这个问题。在Dev C++上测试的结果是4,很不明白。上网搜了一下,得到如下结果:string strArr1[]={"Trend", "Micro", "Soft"};sizeof(strArr1)=12转自:http://apps.hi.baidu.com/share/detail/30398570关于sizeof(string),今天看那本面试宝典的时候看到这个表达式,有点吃惊,书上写着sizeof(string)=4;当时很纳闷,难道 阅读全文
posted @ 2012-04-04 10:27 wanghetao 阅读(50437) 评论(6) 推荐(8) 编辑
  2012年4月3日
摘要: char *p="abc"与char p[]="abc"的不同问题引入:在实习过程中发现了一个以前一直默认的错误,同样char *c = "abc"和char c[]="abc",前者改变其内容程序是会崩溃的,而后者完全正确。程序演示:测试环境Devc++代码#include <iostream>using namespace std;main(){ char *c1 = "abc"; char c2[] = "abc"; char *c3 = ( char* ) 阅读全文
posted @ 2012-04-03 21:43 wanghetao 阅读(6811) 评论(4) 推荐(1) 编辑
摘要: atexit 函数名: atexit 头文件:#include<stdlib.h> 功 能: 注册终止函数(即main执行结束后调用的函数) 用 法: int atexit(void (*func)(void)); 注意:按照ISO C的规定,一个进程可以登记多达32个函数,这些函数将由exit自动调用。atexit()注册的函数类型应为不接受任何参数的void函数,exit调用这些注册函数的顺序与它们 登记时候的顺序相反。同一个函数如若登记多次,则也会被调用多次。 程序例: #include <stdio.h> #include <stdlib.h> vo 阅读全文
posted @ 2012-04-03 20:53 wanghetao 阅读(16087) 评论(0) 推荐(0) 编辑
  2012年4月1日
摘要: 后缀表达式 不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则,如:(2 + 1) * 3 , 即2 1 + 3 *编辑本段表达式的计算 运用后缀表达式进行计算的具体做法: 建立一个栈S 。从左到右读后缀表达式,如果读到操作数就将它压入栈S中,如果读到n元运算符(即需要参数个数为n的运算符)则取出由栈顶向下的n项按操作符运算,再将运算的结果代替原栈顶的n项,压入栈S中 。如果后缀表达式未读完,则重复上面过程,最后输出栈顶的数值则为结束。编辑本段表达式之间的转换 计算机实现转换: 将中缀表达式转换为后缀表达式的算法思想: ... 阅读全文
posted @ 2012-04-01 23:37 wanghetao 阅读(3838) 评论(0) 推荐(0) 编辑
  2012年3月31日
摘要: Online algorithmFrom Wikipedia, the free encyclopediaIncomputer science, anonlinealgorithmis one that can process its input piece-by-piece in a serial fashion, i.e., in the order that the input is fed to the algorithm, without having the entire input available from the start. In contrast, anoffline 阅读全文
posted @ 2012-03-31 21:06 wanghetao 阅读(3294) 评论(0) 推荐(1) 编辑
  2012年3月29日
摘要: 系统允许一个进程创建新进程,新进程即为子进程,子进程还可以创建新的子进程,形成进程树结构模型。整个linux系统的所有进程也是一个树形结 构。树根是系统自动构造的,即在内核态下执行的0号进程,它是所有进程的祖先。由0号进程创建1号进程(内核态),1号负责执行内核的部分初始化工作及进 行系统配置,并创建若干个用于高速缓存和虚拟主存管理的内核线程。随后,1号进程调用execve()运行可执行程序init,并演变成用户态1号进程, 即init进程。它按照配置文件/etc/initab的要求,完成系统启动工作,创建编号为1号、2号...的若干终端注册进程getty。 每个getty进程设置其进程组标识 阅读全文
posted @ 2012-03-29 09:10 wanghetao 阅读(7930) 评论(0) 推荐(0) 编辑
  2012年3月24日
摘要: 概念 何谓自旋锁?它是为为实现保护共享资源而提出一种锁机制。其实,自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用。无论是互斥锁,还是自旋锁,在任何时刻,最多只能有一个保持者,也就说,在任何时刻最多只能有一个执行单元获得锁。但是两者在调度机制上略有不同。对于互斥锁,如果资源已经被占用,资源申请者只能进入睡眠状态。但是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。自旋锁-原理 跟互斥锁一样,一个执行单元要想访问被自旋锁保护的共享资源,必须先得到锁,在访问完共享资源后 阅读全文
posted @ 2012-03-24 11:20 wanghetao 阅读(554) 评论(0) 推荐(0) 编辑
摘要: 可重入函数 在 实时系统的设计中,经常会出现多个任务调用同一个函数的情况。如果这个函数不幸被设计成为不可重入的函数的话,那么不同任务调用这个函数时可能修改其他任 务调用这个函数的数据,从而导致不可预料的后果。那么什么是可重入函数呢?所谓可重入是指一个可以被多个任务调用的过程,任务在调用时不必担心数据是否会 出错。不可重入函数在实时系统设计中被视为不安全函数。 满足下列条件的函数多数是不可重入的:(1)函数体内使用了静态的数据结构;(2)函数体内调用了malloc()或者free()函数;(3)函数体内调用了标准I/O函数。如何写出可重入的函数?在函数体内不访问那些全局变量,不使用静态局部变量, 阅读全文
posted @ 2012-03-24 10:33 wanghetao 阅读(459) 评论(0) 推荐(0) 编辑
摘要: 1.Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。【硬连接】硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节 阅读全文
posted @ 2012-03-24 09:21 wanghetao 阅读(686) 评论(0) 推荐(0) 编辑