c语言猜神童年龄经典算法,C语言之精华汇总.doc

C语言之精华汇总

从研究生二年纪开始学习计算机也差不多两年了,一路走来,有很多的收获,也有不少的遗憾,现在正好有一段闲暇,就想对走过的路留下一些足迹,回忆。每个人都有自己不同的人生,说到这里,就是程序人生了,歌德在《浮士德》中说过:“如果不曾在悲哀中咀嚼过面包,不曾在哭泣中等待过明天,这样的人就不知道你——天的力量。”所以我想记下一些带给我悲哀,带给我哭泣的程序人生。其实学习计算机的基础课程是非常重要的,离散数学,编译原理,操作系统,形式语言……,如果你认真走过了这些路,在以后的日子你会发现你的路会越走越宽,以前的努力和汗水会不断的给你灵感,给你支持,给你前进的武器和勇气。你会发现以后取得的很多成就,不过是朝花夕拾而已! 对于程序语言我喜欢的是C++,它能带给你别的语言无法给予你的无上的智力快感,当然也会给你一门语言所能给你的魔鬼般的折磨。其实Java,C#,Python语言也非常的不错,我也极为喜欢。它们都是非常成功的语言,我从来就不愿意做某一种语言的盲目信仰者,每种语言都有它成功的地方,失败的地方,都有它适合的地方,不如意的地方。所以每一次看到评价语言的文章,我看看,但从来不会发言。C++的前世是C,而且C所留下的神秘以及精简在C++中是青出于蓝而胜于蓝!C所带给人的困惑以及灵活太多,即使一个有几年经验的高段C程序员仍然有可能在C语言的小水沟里翻船。不过其实C语言真的不难,下面我想指出C语言中最神秘而又诡谲多变的四个地方,它们也继续在C++语言中变幻莫测。指针,数组,类型的识别,参数可变的函数。一.指针。它的本质是地址的类型。在许多语言中根本就没有这个概念。但是它却正是C灵活,高效,在面向过程的时代所向披靡的原因所在。因为C的内存模型基本上对应了现在von Neumann(冯·诺伊曼)计算机的机器模型,很好的达到了对机器的映射。不过有些人似乎永远也不能理解指针【注1】。注1:Joel Spolsky就是这样认为的,他认为对指针的理解是一种aptitude,不是通过训练就可以达到的/pr ... /fog0000000073.html指针可以指向值、数组、函数,当然它也可以作为值使用。看下面的几个例子:int* p;//p是一个指针,指向一个整数int** p;//p是一个指针,它指向第二个指针,然后指向一个整数int (*pa)[3];//pa是一个指针,指向一个拥有3个整数的数组int (*pf)();//pf是一个指向函数的指针,这个函数返回一个整数后面第四节我会详细讲解标识符(identifier)类型的识别。1.指针本身的类型是什么?先看下面的例子:int a;//a的类型是什么?对,把a去掉就可以了。因此上面的4个声明语句中的指针本身的类型为:int* int**int (*)[3]真的不掉线吗??、????????????

int (*)()它们都是复合类型,也就是类型与类型结合而成的类型。意义分别如下:point to int(指向一个整数的指针)pointer to pointer to int(指向一个指向整数的指针的指针)pointer to array of 3 ints(指向一个拥有三个整数的数组的指针)pointer to function of parameter is void and return value is int (指向一个函数的指针,这个函数参数为空,返回值为整数)2.指针所指物的类型是什么?很简单,指针本身的类型去掉 “*”号就可以了,分别如下:intint*int ()[3]int ()()3和4有点怪,不是吗?请擦亮你的眼睛,在那个用来把“*”号包住的“()”是多余的,所以:int ()[3]就是int [3](一个拥有三个整数的数组)int ()()就是int ()(一个函数,参数为空,返回值为整数)【注2】注2:一个小小的提醒,第二个“()”是一个运算符,名字叫函数调用运算符(function call operator)。3.指针的算术运算。请再次记住:指针不是一个简单的类型,它是一个和指针所指物的类型复合的类型。因此,它的算术运算与之(指针所指物的类型)密切相关。int a[8];int* p = a;int* q = p + 3;p++;指针的加减并不是指针本身的二进制表示加减,要记住,指针是一个元素的地址,它每加一次,就指向下一个元素。所以:int* q = p + 3;//q指向从p开始的第三个整数。p++;//p指向下一个整数。double* pd;……//某些计算之后double* pother = pd – 2;//pother指向从pd倒数第二个double数。4.指针

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值