13 collier

尚未进行身份认证

计算机专业硕士研究生,酷爱linux等开源技术,爱好文学、书法艺术……非淡泊无以明志,非宁静无以致远,愿每一个有志之士早日实现自己的人生梦想!

等级
TA的排名 8w+

螺旋队列

21   22   23   24   2520   7     8    9    1019   6     1   2    1118   5    4    3    1217   16   15   14    13   看清以上数字排列的规律,设1点的坐标是(0,0),x方向向右为正,y方向向下为正.例如:7的坐标为(-1,-1),2的坐标为(0,1),3的坐标为(1,1).编程实现输入任意一点坐标(x,y),输出所对应的数字。   解析:规律能看出来,问

2010-09-29 21:33:00

和字符串相关的几个面试题目

一、编写程序实现字符串反转输出//实现字符串反转输出#include#include#includevoidf(char*src){ intlen=strlen(src); char*s,*d,*dest; //s指向字符串的最后一个字符 s=&src[len-1]; //动态分配内存存放反转后的字符串,注意不要忘了给字符串结束标识符分配空间 dest=(char*)malloc(len+1); d=dest;//指向反转后的字符串的指针

2010-09-28 14:08:00

几个需要引起注意的面试题

1、如何判断一段程序是由C编译程序还是由C++编译程序编译的?答案:C++编译时定义了_cplusplus,C编译时定义了_STDC_。------------------------------------------------------2、在C++程序中调用C编译器编译后的函数,为什么要加extern “C” ?答案:C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。如假设某个函数原型为:voidfoo(intx,inty),则该函数被C编译器编译后

2010-09-24 21:50:00

类型隐式转换

台湾某著名CPU生产公司2005年招聘中有一个面试题为:下面程序的结果是什么?charfoo(void){   unsignedinta=6;intb=-20;charc;(a+b>6)?(c=1):(c=0);returnc;}------------------------------------------------------解析:结果为1。这是因为无符号数(unsignedint)和有符号数(int)相加,系统会自动把有符号数转化为无符号数类型(unsignedint)。因此题

2010-09-24 19:27:00

面试中常考的一类特殊的交换题目

1、Therearetwointvariables:aandb,don'tuse"if","?:","switch"orotherjudgementstatements,findoutthebiggestoneofthetwonumbers.程序如下:------------------------------------------------------------#includeintmain(){   inta,b,c;   un

2010-09-24 15:58:00

C语言常用排序详解

一、相关知识介绍(所有定义只为帮助读者理解相关概念,并非严格定义):1、稳定排序和非稳定排序  简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,我们就说这种排序方法是稳定的。反之,就是非稳定的。 比如:一组数排序前是a1,a2,a3,a4,a5,其中a2=a4,经过某种排序后为a1,a2,a4,a3,a5,则我们说这种排序是稳定的,因为a2排序前在a4的前面,排序后它还是在a4的前面。假如变成a1,a4,a2,a3,a5就不是稳定的了。2、内排序和外排序 在排序过程中,所有需要

2010-09-24 11:23:00

访问数组元素的方法小结

<br/>一)、一维数组和指针<br/>若有以下语句:<br/>int*p,s[10],I;<br/>p=s;<br/>则s[i]的地址可用下面三种方法表示:<br/>(1)&s[i]    (2)s+i    (3)p+i。<br/>因此可以用s[i],*(s+i),*(p+i)来表示s[i]。由于s[i]可以用表达式*(s+i)来表示,同理*(p+i)也可以用p[i]来表示。事实上在c语言中,[]并不仅仅是用作表示数组元素的记号,而是一种运算符。因此当p指向数组s的首地址时,表示数

2010-09-14 14:43:00

当a为数组时a和&a还是有区别的

<br/> 假设有inta[];那么a实际上是数组a的首元素a[0]的首地址,而&a是数组的首地址,其值和&a[0]相等,但是两者的意义不同,这一点可以从指针的移动运算方面得到验证。且看下面程序:<br/>#include<stdio.h><br/>intmain()<br/>{<br/>      inta[5]={1,2,3,4,5};<br/>      int*ptr=(int*)(&a+1);//强制类型转换,将其转换为指向整型变量的指针(也可以不转换)<br/>  

2010-09-06 11:57:00

关于字符的一道很容易做错的题目

看下面程序:#includeintmain(){      chara[1000];      inti,j;      for(i=0;i             a[i]=-1-i;      printf("%d/n",strlen(a));      return0;}请问上述程序的输出结果是什么?答案是255。解答该题需要主要以下几点:1、 数据在机器中是如何存取的?数据在机器中是以补码形式存放的。正数的补码和其原码一致,负数的补码符号位为1,其余位为该数绝对值的原码各位取反

2010-09-04 17:41:00

sizeof的那些事

一、sizeof是关键字而不是函数Sizeof是C语言中32个关键字中的一个,注意它是关键字而不是函数!举个例子:intI;Asizeof(int)  Bsizeof(i) Csizeofint Dsizeofi在32位机器上的VC6.0编译器下测试下可知A、B、D的值都是4,而C选项是一种错误的表示方法,在编译器下会报错。D选项足以证明sizeof是一个关键字而非函数,试想如果是函数的话会容许你不将参数用括号括起来吗?那么C选项为什么是错误的呢?原因和简单。Int是一个类型,前面再加个

2010-09-04 16:00:00

关于四个swap函数的归类

   在学习C语言函数那一章节的时候我们第一次认识了swap。当时书上举这个例子是为了说明函数的“单向值传递”原理,即在函数调用的时候,实参总是将自己的值单向传递给形参,而不能反过来,并且在这个过程中形参的改变不会导致实参的改变。后来,我们又学习了指针,然后知道在函数调用的时候,实参还可以是一个变量的地址或者指针,即所谓的传址,并且知道传址调用过程中形参的改变会导致实参变化。再后来,我们还学习了C++程序设计语言,了解到在C++中还有一种函数参数的传递方式即“引用调用”,而且引用调用过程中形参的变化也会引

2010-09-04 09:57:00

关于static之一二三

学过C或者C++程序设计语言的同学一定对关键字static不是很陌生,但是是否对其非常熟悉,熟练掌握其用法,把握其本质和精华,我想大部分同学未必如此。static是c语言32个关键字中的一员,造成大家对它掌握不是很深刻的原因我想可能是在平时学习或者实际编程中对它用得较少。为了全方位揭开static这个关键字的庐山真面目,下面我结合若干文献做一小结。一、static在C语言中的作用Static作为关键字,它可以用来修饰变量和函数,在C语言中其作用总体来说有两个。其一是起到信息隐藏的作用,即将变量或者函数的作用

2010-09-02 18:57:00

关于线程的一点体会

历史总要向前发展。马克思主义哲学上讲,生产力决定生产关系,生产关系必须要适应生产力的发展,否则就必须以革命或者改革的方式对现有的生产关系进行调整以更好的适应生产力的发展。这一点在计算机技术的发展历史中其实也得到了充分验证。当多道程序设计理论和技术已经深入人心,人们认识到程序已经具有了新的变化,拥有了一些新的特性,如并发性和动态性以及相互间存在的制约关系,这些新的特性与我们以往认识到的程序的静态性相比似乎显得有点格格不入,以往的具有静态属性的“程序”概念已经不能够正确地描述多道程序系统的特点。于是,在这样一个

2010-08-29 11:05:00

关于进程之一二三

   进程是操作系统中一个非常重要的概念。就像生活中人与人打交道的时候都会去了解对方的来历和背景一样,在学习进程的时候我们也有必要把进程的来龙去脉搞清楚。这就是为什么会产生进程这个概念,它的特点是什么,进程和通常所说的程序的区别在哪里?如果我们能够搞清楚这几个疑问,我想对进程也就基本掌握得差不多了。一、为什么会产生进程?在谈到进程诞生背景的时候,我们需要重新回到“多道程序设计”这个划时代的话题。因为正是多道程序设计的应用加速了“进程”的诞生!我们知道多道程序设计的出现使得程序出现了以下特点: 1)并行性

2010-08-27 14:56:00

关于“重定位”及其相关的几个概念

     重定位是多道程序设计中一个非常重要的概念,它是多道程序在内存中同时运行的基础。所谓重定位就是将逻辑地址空间变换(或称映射)为实际的物理地址空间,或者把某个相对地址变换(或映射)主存的绝对地址。该定义涉及到绝对地址、相对地址和逻辑地址,下面逐一进行解释。     绝对地址是指存储控制部件能够识别的主存单元编号(或字节地址),即主存单元的实际地址。     相对地址是指相对于某个基准量(通常用零做基准量)编址时所使用的地址。一般用于程序编写和编译过程中。因为指令、数据在CPU中执行以前都要先放到

2010-08-26 21:13:00

关于一类操作系统——分时操作系统

   纵观操作系统的发展史,大概可以把操作系统分为三种大的类型,即多道批处理系统、分时操作系统和实时操作系统。   分时系统是在70年代中期产生的。马克思主义哲学认为事物发展的源泉和动力是矛盾。在分时系统即将诞生的黎明,多道批处理系统本身所固有的矛盾急切要求人们去寻找一种新的、优于多道批处理系统的操作系统。那么多道批处理系统本身所固有的矛盾是什么呢?   大家知道,多道批处理系统是由单道批处理系统发展起来的。所以在讲多道批处理系统之前,先让我们简单地了解一下单道批处理系统。单道批处理系统是将多个用户的

2010-08-26 17:28:00

一个程序员面试题目的简单分析

   下面这个简短的程序来自于《程序员面试宝典》指针部分,是美国一著名计算机嵌入式公司的面试题。且看程序:--------------------------------------------------------------------------------------------#includeusingnamespacestd;char*GetMemory(void){       charp[]="hello";     returnp;}voidmain(){     

2010-08-21 15:42:00

一个很容易忽视的死循环例子

<br/>   平时大家看书学知识的时候往往会有种错觉,就是认为那些最基础不过的知识点自己应该早就掌握好了,这样就很容易导致一种结果——书本是看完了,然而却只不过是一个简单的走马观花,让知识在大脑中重现了一次而已,并没有加深对知识的理解,那么这样就会很容易在最简单、最基础的地方栽跟头。<br/>   且看下面一个关于死循环的粒子,据说还是华为公司招聘的一个考题:<br/>----------------------------------------------------------------

2010-08-21 15:05:00

内存分配函数——alloca()

<br/>    C语言中常用的内存分配函数主要有malloc()、calloc()、realloc(),这些函数用于从堆中动态获得一块内存。一般为了避免发生内存泄露的现象,每次调用这些函数时都会在其后有对应的free()函数出现,然而有时候可能不知道如何调用free来与先前的malloc等相对应,那么就有可能造成内存泄露!有没有什么办法不使用free函数来释放内存却能有效避免内存泄露现象发生呢?办法是有的!那就是在可能的时候使用alloca()来分配动态内存。这是因为在调用alloca()返回时,它所

2010-08-19 10:18:00

Skype协议分析

Skype协议分析(2006版) 整理翻译:袁建明Angel_YY@126.com 概要:Skype是创建Kazaa的组织在2003年开发的一个基于Peer-to-Peer(对等网络)的VoIP客户端。它可以几乎无缝的穿越NAT和防火墙,并且语音质量比其他的VoIP客户端软件要好很多。他加密了端到端的通话,分散式存储用户信息,支持即时消息通信和网络语音会议。   本

2008-12-31 20:41:00

查看更多

勋章 我的勋章
    暂无奖章