C语言回顾 day1

今天回顾了C语言的历史,编译,特性等知识,是在看C primer plus的1-2章时,看到有值得注意的点就记录一下,没有什么其他的特定组织结构哈

bell lab

bell lab牛逼,c语言1972年诞生于那里,后面再c基础上又有了c++ ,java,python,都是现在最流行最强大的几个语言
C语言是Dennis 和ken tompson由ken tompson的B语言发展来的,B语言也是基于另一个更早的语言来的,总之每一个新语言的设计都是为了实用,为了更方便更好用。

可以想象的到,在c++等等后起之秀还没被开发之前,C是一枝独秀,不管小型机大型机,电影特效,电子表格软件,编译软件等等,所有的应用都是用C语言来完成的,因为那时候就只有这一个语言比较强大,可以想象那个时候学习C是多么主流,大概就像现在学python的风潮一样吧。

对“控制性”一词的解析

突然发现程序语言说控制性实际上说的都是直接操作硬件,比如直接操作cpu的寄存器,内存,外部设备的存储空间等等,越可以精细控制实际的硬件,就越具有控制性。

(之前看到书上网上说C语言的优势说到他的高效啦,控制能力强啦,都是记下来,没动脑子想过为啥说他控制性强,现在明白了,毕竟所所有的语言都是可控的,我们用各种语言都需要控制语言实现我们真正想要的功能,所以控制性不是说功能的控制,而是对硬件的精准控制!高级语言基本都是不会涉及底层硬件的控制的,完全不过问内存的分配啥的)

所以越底层的语言的控制性越强,比如汇编语言(为特定CPU设计的助记符(一般都不称之为语言),CPU不一样语言就不适用了)就有更精细的控制能力

对“高效性”一词的解析

一是说写程序快,程序短小
而是说程序执行速度快

“可移植性”

这个特性是针对不同操作系统而言的,不同系统上不需要对源代码做改变或者改动很小(比如只改改伴随主程序的头文件)相比于以前的BASIC, FORTRAN,C在可移植方面处于绝对的领先地位。

比如,IBM PC上的BASIC程序放到苹果PC上,就完全跑不通了(要知道mac和IBM是近亲哦)

“强大和灵活”的解析

“强大”主要是说C的用途广泛,什么都能做,系统也能写,其他语言也得靠C写的编译器和解释器才可以正常工作,还能用于物理呀工程呀等科研问题的解决。
在这里插入图片描述
“灵活”就是限制不严格,灵活的同时也伴随着危险, 灵活完全阐释了那句哲理“自由是权利和义务的对等”,你会享受很多方便,比如转换数据类型方便,但是也容易出错。
比如指针就会带来很多很不容易发现的错误

一个被忽略的问题:既然c++,java等更强大的语言以C为基础被开发出来,为啥c并未被淘汰,还是牢牢占据主流语言排行榜?

说明这几个语言一定有不同的侧重点,使得他们适用于不同的领域,比如C更多的活跃在嵌入式开发的世界里,车,相机,洗衣机,DVD播放器等等所有的嵌入式的小设备,都是用C来进行微处理器编程;
c++用在图像和游戏上,Java用于开发各种软件。

编译器和链接器

在这里插入图片描述
因为C和unix系统的联系紧密, 所以Unix,linux系统都自带C的编译器,但是Windows和mac需要自己安装C编译器

编译器是把源代码转换为可执行代码的一个程序,他还会根据头文件从C的库函数中向代码中添加一些代码(实际上是linker链接器把库函数的程序导入到自己的源代码,但是一般编译器会运行链接器程序)

自己的源代码缺少两个来源的代码:一是启动代码,是操作系统和我的IDE的接口;二是库例程,比如scanf和printf。这两个

编译器还可以检查一些语法错误
在这里插入图片描述

文件名由基本名和扩展名组成

a.xx
a是基本名
xx是扩展名

Linux

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

编译器会利用声明语句的信息决定分配多大的内存,比如int num;(int 是关键字,num是标识符identifier)

在这里插入图片描述
但是现在c99标准允许生命放在任何地方,只要在使用它之前声明就行。

C语言里面用小括号的地方只有函数名,所以编译器只要看到小括号(圆括号)就知道前面的是函数名。

在这里插入图片描述在这里插入图片描述在这里插入图片描述

声明变量的四点好处

在这里插入图片描述

总结:C程序的结构

C程序由1个或多个函数组成,
每个函数又由函数头和函数体组成,函数头包括预处理器命令和带有参数的函数名,函数体是花括号里面的内容,由多条语句组成,每个语句有一个分号结尾(分号是语句的一部分,不像pascal那样只是分隔符),语句一共就5种,声明语句,赋值语句,控制语句,函数调用语句,空语句。
在这里插入图片描述在这里插入图片描述

这么一看C真是很简单高效紧凑的呢哈

练习

在这里插入图片描述
源代码文件是文本文件
目标代码和可执行文件都是机器语言,但前者是只由自己写的程序编译出来的机器语言,但后者还包含了库程序和启动代码编译出的机器码。

在这里插入图片描述
在这里插入图片描述
\n必须是反斜杠,不可以是斜杠,否则没用

Hello world!
No/nfish?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值