签到

05月06日
尚未签到

共有回帖数 0

    完美洒脱

    等级:
    C语言,即作为语言,也就必须说下以下几点:
    1 C不是一种软件,只是一种语言,像英语法语德语,这种语言在不同时期遵守不同的标准(如C89,C99),其本身是免费的——不会有人因为你说德语就收费是吧?其可以在不同的软件上实现——就像英语可以写在纸上,也可以显示在屏幕上。而这些软件不尽是免费的。

    2 中国话是是实现了中国人和中国人之间的交流。而C语言则是实现了人——也就是程序员和各位小鹏有——和机器之间的交流。语言也分高级低级,但这分别,并非高低贵贱的分别。而是牵涉到运行效率和开发效率之间的分别。汇编语言(assembly)作为不折不扣的面向底层的语言,运行效率很高,但其实现计算一个常数(这里是3)的四次方的方法如下:
               mov ax,3    ' 将立即数3放入寄存器ax
               add ax,ax    '计算二次方
    add ax,ax     '计算四次方
    一个简单的运算就要打3行,如果要编一个更大的程序呢?那就活脱脱一个杯具。能不能使得开发效率高点呢?能。看看C语言是怎么实现的:
              int a;      /*定义整型变量a,赋值为3
              a=a*a*a*a;   /*计算四次方
    是不是形象直观多了?那既然C这么优秀,汇编这么古老的东西早就该抛弃了吧?当然不是。因为汇编的运行效率的优势在一些领域是无可比拟的。我们看到:运行效率高的,开发起来慢;开发效率起来了,运行效率又有得下降了(当然,好的C程序运行起来不比汇编写的慢多少);所以,每种语言,自有其意义。那么,有没有一种开发起来更简单,运行起来又比C漫一些的语言呢?大家去查一查吧。

    3 面向对象与面向过程
    林老总当年打仗有一个特点,一打大仗,直接给下面各小弟下达攻击目标;至于怎么去穿插分割,迂回击破,洒家不管,那是你们的事情,给我办成就行了。
    打仗有得放权,那编程呢?
    面向对象,说难难,说易易;其实也就是编程中的放权。
    所谓封装性,不可知只是表象,
    玩过魔兽争霸的同学应该了解魔兽的地图编辑器吧,玩过上古卷轴的同学应该知道mod吧。要编辑一个英雄,要他在哪出现有什么技能,点几下编辑器就OK了,方便吧?但是点那几下,究竟内部发生了什么?调用了那些函数,改变了那些参数,这些我们都不知道,也不需要知道。
    所谓公论,C语言是面向过程的,所以后来有了专门面向对象的C++;其实面向对象应视做一种思想,就此而言,C编的好,也是可以面向对象的。
    下面开始“Hello world”


    Hello world是编程世界中的咒语,学C先输出一个Hello world,那你肯定信心大增。完整代码如下,下面再一行行解释。
    #includestdio.h
    int main()
    {
    printf("Hello world");
    return 0;
    }
    1 #includestdio.h
    庄生晓梦迷蝴蝶,望帝春心托杜鹃——李商隐.锦瑟
    刚开始学这首诗的时候,我一直纳闷,这“望帝”究竟是什么东西?当时当然不会想到去《华阳国志.蜀志》去查出处,望帝原来是一个真真正正的杯具帝阿~为什么要说这个?大家看到下面有个printf没有?在用有的编译器时你必须加#includestdio.h,就是为了要告诉编译器去哪查找printf的出处。#include 就是告诉编译器这是一个预处理命令——这首诗可是有出处的;去哪查呢,去stdio,h这个文件里面去查。
    以后大家编写C语言程序,绝大部分在文件头要加个#includestdio.h。
    2 main函数
    大家还记得中学学函数y=f(x)吧,f就是函数,x就是参数,y就是返回值。一个函数,你给他一个参数,它就给你一个返回值,很划算对不对?当然,C语言里面也有函数,但是不都是一个参数一个返回值,有些函数你不给他参数它也给你返回值,有些函数你给他几个函数它也不给你一个返回值,很小气。这样的函数也叫做“过程”,过一过而已嘛,别想得什么东西。
    main函数也是一个函数,我们把printf()踢开,来看看他的框架:
    int main()
    {

    return 0;
    }
    先看main右边的(),这个东西就是拿来放参数的,可以一个参数都不放,也可以放两个,这里我们选择不放,所以就空着。以后学深入了,就可以往里面放参数了,也就是所谓“命令行变元”是也。
    再看{}和里面的return 0。{}中间就是main的具体实现——main究竟是干什么的。这个框架里,我们知道main只做了一件事情,就是返回了一个整数0。
    综上,main函数是这样一个函数:我们不给它任何参数,它给我们一个返回值0。参考y=f(x)的形式,main函数可以山寨地表述成这样:0=main()。只是一个比方,大家千万别这样写。
    还剩一个int,这个int是什么呢?就是告诉编译器,main返回一个整数(integer)0,而不是其他类型的数。这个int也可以不写,甚至renturn 0也可以不写,编译器会自动帮你加上,但是千万别写void main()上去,这是不符合规范的。void main()的写法在C语言吧被诟病很多年,有兴趣的可以去看相关帖子 ^_^。

    3 printf函数
    前面说过,main函数你不给他参数,他也给了你一个返回值,很大方。这里我们看到了一个不那么大方的函数printf(),你给了它一个“Hello world”作为参数,他才给你一个返回值。返回值也是int型,只是我们这里不用罢了。这个函数的意义就是,把你给它的参数输出到标注输出(也就是屏幕)上面。

    楼主 2016-04-15 12:34 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知