上一页 1 ··· 22 23 24 25 26 27 28 29 30 ··· 58 下一页
  2014年2月24日
摘要: 1 char* strcpy(char* strDest, const char* strSrc)2 {3 assert((strDest!=NULL) && (strSrc !=NULL)); //strDest和strSrc不为空4 char* address = strDest; //保存strDest,用于返回5 while( (*(strDest++) = *(strSrc++)) != '\0' ); //逐个字符赋值6 return address; //返回地址 7 }注意:1、栈上的char数组,数组名就是一个指针,这个指针的指向不... 阅读全文
posted @ 2014-02-24 19:01 Andy Niu 阅读(250) 评论(0) 推荐(0) 编辑
  2014年2月21日
摘要: 1、首先考虑,什么情况下使用多线程? 第一种情况:做事情A的过程中,顺便去做事情B,不需要B完成,可以接着做A余下的部分。这种情况下,对于事情B启动一个线程,往往需要传入一个回调方法,等事情B完成后,在主线程上执行回调方法。 第二种情况:事情A和事情B同时做,他们访问同一块数据,需要对这块数据加锁。2、考虑下面的需求,两个线程t1,t2,修改同一个数据,t1每次增加1,t2每次减2,怎么做? a、首先肯定要准备两个方法Add1和Sub2,分别传给t1,t2; b、准备共享资源和互斥体mutex(也就是值为1 的信号量); c、Add1和Sub2方法内分别加锁,在加锁的语句块内,修改共... 阅读全文
posted @ 2014-02-21 20:01 Andy Niu 阅读(539) 评论(0) 推荐(0) 编辑
摘要: 1、方法也是有类型的,方法的类型由返回类型和形参表决定。比如int F (int)的类型就是去掉方法名,int (int)。2、对于方法类型,在返回类型和形参表之间,加上一个名称F,就表示一个特定的方法F。3、思考,如果我在返回类型和形参表之间,加上一个指针变量呢? 表示指向这一类方法的指针。即int (*P) (int),需要特别注意的是,必须使用括号把*P括起来。如果没有括起来,int *P(int),从编译器的角度理解,就变成了返回int指针的方法声明。4、那么接着思考,方法指针也是指针,既然方法能够返回其他指针,当然也可以返回方法指针。 方法指针的类型就是去掉指针名称,int(*).. 阅读全文
posted @ 2014-02-21 19:06 Andy Niu 阅读(726) 评论(0) 推荐(0) 编辑
摘要: 1、从封装的角度看,类可认为是一个命名空间,名称就是类名。类中有两个成员:字段和方法。2、指针可以指向任何对象,当然也可以指向类中的字段和方法。那么该如何指向类中的字段和方法呢?3、分别是: int Animal::*pData = &Animal::_age; int (Animal::*pFun)() = &Animal::getAge;4、我们定义指向类中字段或者方法的指针,往往是为了通过指针和对象绑定一起,去修改字段或者访问方法,这种情况下,我们不需要直到类的字段名或者方法名。该怎么做呢? 既然是指向字段或者方法的指针,通过*解引用,就得到了字段或者指针。对于对象使用. 阅读全文
posted @ 2014-02-21 18:33 Andy Niu 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 1、对于指针*,声明或者定义的时候,表示变量为指针。在其他的地方,如果是单目操作,表示对指针解引用,如果是双目操作,表示乘法。2、对于引用&,声明或者定义的时候,表示变量为引用。在其他的地方,如果是单目操作,表示取地址,如果是双目操作,表示按位与。3、声明或者定义指针的时候,*可以紧靠类型,也可以紧靠变量,二者是等价的。但是推荐的编码风格是,紧靠变量。为什么? a、紧靠类型,会产生错觉。比如int* i, j; 有些人会认为定义了i,j两个int指针。而实际情况是i是int指针,j是int变量。使用int *i, j; 可以避免产生这种错觉。 b、考虑指向成员的指针,从封装的角度看,类 阅读全文
posted @ 2014-02-21 18:09 Andy Niu 阅读(640) 评论(0) 推荐(0) 编辑
  2014年2月20日
摘要: 1、在C语言中,没有字符串类型,因此使用char指针表示字符串。2、那么问题来了,使用char* 表示字符串,到哪里是结尾呢?因此需要一个特殊的字符作为哨兵,类似迭代器中的end(),这个哨兵就是'\0',注意不是字符0.3、对于文本字符串,编译器会自动添加\0。4、对于字符数组的赋值,如果不使用文本字符串,需要用户在尾部添加字符\0。对于其他类型的数组,没有\0的概念。5、对于char指针,C语言提供了一系列方法,如strlen,strcmp。这些方法有个特点,都是假定最后一个字符为\0。因此对于char指针,我们要保证最后一个字符是\0。6、考虑sizeof,对于指针,取值 阅读全文
posted @ 2014-02-20 21:39 Andy Niu 阅读(3263) 评论(0) 推荐(1) 编辑
摘要: 1、整个流程:需求分析-->概要设计-->详细设计-->编码实现-->单元测试-->集成测试-->系统测试-->验收测试。2、单元测试覆盖率包括:语句覆盖,判定覆盖,条件覆盖,判定条件覆盖,条件组合覆盖,路径覆盖。 阅读全文
posted @ 2014-02-20 21:09 Andy Niu 阅读(159) 评论(0) 推荐(0) 编辑
摘要: ftp文件传输协议21telnet远程登录协议23smtp简单邮件传输协议25http超文本传输协议80pop3邮局协议第3版本1101、t=transfer,传输的意思。2、stmp是发邮件协议,包括两部分,客户端到自身服务器,服务器转发到目标服务器。3、pop3是接收邮件协议,通过客户端到服务器上把邮件取下来,需要用户名和密码。 阅读全文
posted @ 2014-02-20 21:05 Andy Niu 阅读(567) 评论(0) 推荐(0) 编辑
摘要: 1、注意这里说的是,与零值比较,而不是与零比较。2、对于int类型,与零值比较就是: if(var == 0) //零值3、对于bool类型,零值表示false,任何非零值表示true,因此使用: if(!var) //零值4、对于float,计算机无法表示准确的浮点数,比如大家都知道:1.0/3 * 3 !=1,因此需要判断变量是否大于一个很小的负数并且小于一个很小的正数。 const float f = 0.000001; if(var>=-f && var<f) //零值5、对于指针,零值就是null,因此应该与null比较。 if(var ==null) / 阅读全文
posted @ 2014-02-20 20:49 Andy Niu 阅读(925) 评论(0) 推荐(0) 编辑
摘要: 1、编码的关键是思路,思路不对,不可能编出正确的代码。考虑下面两个关于单向链表的题目:2、单向链表,如何判断是否构成环形? a、思路一:常规做法,建个集合,遍历单向链表,集合没有包含元素,添加进去集合,集合包含元素直接返回true,跳出遍历,返回false。 b、思路二:使用快慢指针,建立两个节点,n1从head开始,n2从head->next开始,while(n1 && n2),n1每次走一步,n2每次走两步。如果n2先走到null,说明没有环。如果n1==n2,说明有环,n2又从后面追上来。3、对于单向链表,查找倒数第K个节点。 a、思路一:先计算节点个数,倒数第K个 阅读全文
posted @ 2014-02-20 20:29 Andy Niu 阅读(272) 评论(0) 推荐(0) 编辑
上一页 1 ··· 22 23 24 25 26 27 28 29 30 ··· 58 下一页