C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。 C语言能以简易的方式编译、处理低级存储器。比如单片机等都是c语言编程。

在介绍它之前,先来讲个故事,来理解计算机执行的原理以及c语言是如何运行的。

2077年,由于人类对地球的过度开采,国际局势紧张,核战争一触即发,而此时,你被派乘坐啊苹果号月球探测器前往月球,以解决地球能源问题。

几个月后,你在月球失去了与地球的联系,无奈之下,你破解了自动驾驶系统计算好轨道,用一支圆珠笔启动了火箭飞往地球,落地后,发现世界上几乎所有地区都遭受了核打击,大部分的生物都灭绝了,但是你惊奇的发现,数据库由于地理位置偏僻,保护严实,还能继续使用,你和同行的宇航员相视而笑,对,第一件事就是造个计算机出来,以便百度出生存攻略。

你脑海里闪过一丝cpu原理图,它是由alu,寄存器,和缓存器(cash memory)构成的,alu是运算单元,里面由各种逻辑门电路构成,可以进行简单的二进制运算,比如0110+1000=1110酱紫的运算,光有运算还不行,还得有储存,就像人类写竖式那样,得把数据记录起来,寄存器就诞生了,它离cpu最近,取指令数据一般都从寄存器中取,可是内存太小,怎么办呢,于是你又加了缓存来存放数据,虽然速度不如寄存器快,但是存的数据多。于是你拿起一把沙子,不停的搓沙子,手里渐渐出现了cpu的轮廓。

又捡起地上的内存(以后讲内存)和硬盘,组成了计算机,可是没有系统,怎么用呢?

众所周知,计算机只认识0和1,0和1用术语说,这个就叫机器语言,对人很不友好,不小心输错一个数,程序就运行不起来,但你只好按照机器语言编写程序操作,0100100  1010111100111000

前面的二进制是指令,后面的二进制是数据,(二进制输出hello需要很多行密密麻麻的0和1,这里就不写了)经过一番折腾,你终于让计算机说出来第一句话“hello world”,可是既然是自己做的设备,为什么不给他们起个名字统一管理呢?给寄存器取名为eax,ebx。。。。一顿操作后,你有了汇编语言,汇编是较低层语言,但相比机器语言方便了很多,只要写这些就足够让计算机开口说话了。可是还是不方便,可不可以更简单些,这个时候,高级语诞生了,c就是其中之一。

data segment ;数据段string db 'Hello,World!$'
data ends
code segment ;代码段
assume cs:code,ds:data
start:mov ax,data ;获取段基址mov ds,ax ;将段基址送入寄存器mov dx,offset stringmov ah,9int 21hmov ah,4chint 21h
code ends
end start

上面是汇编语言,下面是c语言输出hello world

#include<stdio.h>
int main(void)
{
printf("hello world");
return 0;
}

只要四行代码就完成了以前需要很长时间而又复杂的工作,这里#include<stdio.h>是引用头文件,简单来说,就是引用别人帮你预先写好的函数,等预处理(文章后面会讲)的时候,会把引用的东西替换成头文件里的函数,这样工作量就大大减少,你可以把它当作模块,用的时候就取出来,stdio意思是standard in and out.head(标准的输入输出的头文件),顾名思义,你可以用这个模块进行输入输出的操作,而你想让计算机开口说话,这便是输出,所以需要调用这个库文件来操作。

下一行中,main是主函数入口,编译的时候会首先找到这个东西,然后从这开始执行代码,就像路标一样。int规定了函数类型,int代表整形函数,除此之外还有float ,char double等。这里的 int main()意思就是这是一个返回值为整数类型的主函数,编译器会从这里开始执行,并返回一个整数。当然你也可以这么写

#include<stdio.h>
void main()
{
printf("hello world");
}

void是不返回值,所以不需要写return 0;中间那个就是命令,print打印再加个f,就是输出后面的文字,这里注意双引号和分号不能丢掉,这些符号是固定格式,告诉编译器你是否写完了这个命令或者其他的信息,所以结尾要分号,输出内容要双引号;

这个时候可能有人要问了,return有什么用呢,我不写也可以运行啊。

咱们所有的程序运行都要依赖系统,也就是Windows,linux,安卓等的东西,他们负责资源分配,你要运行程序,系统就给你分配内存,你关闭程序,系统就把内存分配给其他程序,以保持高效率。而return 0就是告诉系统,我是正常退出的(良民大大滴),而异常退出返回值就是非0值(你可以在vs上运行代码时强制关闭进程,vs下面会写return 的值,这个值绝对不是0),系统可以看到。那为什么我不写return 0也能运行呢,这不是不写可以,只是有人替你负重前行,没错,是编译器帮你写了,但平时还是写上好,要有一个好习惯。

你的第一个c程序写好了,那么怎么运行在你手搓的计算机上呢?c是编译型语言,需要先转换为可执行文件.obj,编译器会先预处理你的文档,就是把#后的东西转换成函数或常数,然后转换为汇编语言.s文件(上面所介绍的),汇编再把它转换为机器语言.o或.obj,再用连接器,链接系统给的启动文件等的各种文件,成为程序。这就是c的编译过程了

初学者可以尝试写一个c程序(根据反馈会写后续c的教程)

ps:vs下载地址感谢您下载 Visual Studio - Visual Studio (microsoft.com)​​​​​​​​​​​​    社区版免费,community。

用读小说的方式掌握c语言(仅适合初学,目的是让c的学习不枯燥)相关推荐

  1. 晋江文学城、番茄小说和米读小说被约谈 要求停更整改

    [TechWeb]7月16日消息,7月15日,按照全国"扫黄打非"办公室部署,北京市.上海市"扫黄打非"办公室联合网信.新闻出版和文化执法等部门分别对晋江文学城 ...

  2. 简易小说爬虫显示器的不同语言实现示例(Python-tkinter-wxpython-pyqt5-Flask,Java,C,C++,C#,Lua,Go,Kotlin,HTML,JS,VB,PHP,R)

    ​ 图片仅供参考 目录 前言 不同语言的小说爬虫实现 Python+tkinter 代码: 运行步骤 Python+WxPython 代码: 运行步骤 Python+PyQt5 代码: 运行步骤 Ja ...

  3. 读课文|读笔记|读小说|甚至读漫画|教你如何让书开口说话

    以前上课,老师带着我们一起读课文,现在老师会在课件里播放课文朗读的文件:以前得用磁带光盘跟着读英语,学单词,现在人工智能读单词准确又便捷:以前笔记只能用嘴巴读用眼睛看,现在可以用耳朵听还可以分享给别人 ...

  4. c语言中读和写的作用,c语言文件读写

    c语言文件读写 从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种. ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码.ASCII码 ...

  5. python语言只能以程序方式执行_Python语言程序设计

    零基础学编程,用python入门是个不错的选择,虽然国内基本上还是以c语言作为入门开发语言,但在国外,已经有比较多的学校使用python作为入门编程语言.面向对象程序设计.连接数据源等基本知识,然后结 ...

  6. mysql 值为0 但却被认为null_MySQL介于普通读和锁定读的加锁方式

    在阅读本文前最好先看过三篇语句加锁分析文章: 超全面MySQL语句加锁分析(上篇)(求转) 超全面MySQL语句加锁分析(中篇)(求转) 超全面MySQL语句加锁分析(下篇)(求转) 事前准备 为了故 ...

  7. 程序的两种执行方式,静态语言和脚本语言

    程序的两种执行方式,静态语言和脚本语言 文章目录 程序的两种执行方式,静态语言和脚本语言 编译和解释 静态语言和脚本语言 编译和解释 编译:将源代码一次性转换成目标代码的过程.(编译一次后,若需再次执 ...

  8. 安卓手机小说阅读器_【趣读小说大全APP安卓】趣读小说大全手机app下载 v1.0.0 免费版...

    趣读小说大全APP是一款十分好用的在线小说阅读软件,一款能够让每一个用户都能在这里轻松体验最简单的小说阅读,每天都能在这里发现更多的阅读精彩.趣读小说大全APP手机版转为每一个用户实时推送最新的小说资 ...

  9. 米读小说怎么调节亮度

    米读小说怎么调节亮度,不少的用户也是在使用这款小说软件来阅读小说,在阅读的时候发现屏幕太暗了,而有些情况屏幕太亮了,也是非常的刺眼,对此也是想要知道这个怎么调节亮度,下面就给大家带来详细介绍. 米读小 ...

最新文章

  1. 组合计数 ---- 2020 EC final B. Rectangle Flip 2(枚举+组合计数)
  2. matlab高级图形设计实训上机答案,Matlab实验第一次实验答案[共8页]
  3. SAP Analytics Cloud里基于dimension的calculation
  4. hdu120118岁生日
  5. 大小端模式的快速判断方法
  6. IE8下div+CSS
  7. C#解析单层html的中的文本,然后拼接起来
  8. 047——VUE中css过渡动作实例
  9. LR(1)项目集族的构造:如何确定前向搜索符
  10. 一个程序员的书法学习之路-法帖篇
  11. 磁盘管理高级进阶-LVM逻辑卷管理
  12. win10内存占用率过高怎么办_Win10系统硬盘占用率100%各种卡死怎么办?
  13. Vue项目关闭语法检查
  14. 如何缩短测试开发周期和开发成本?
  15. 别找ERP试用版了,直接送你一个免费的
  16. Android SIM卡联系人操作总结
  17. 如何在opengl用代码绘制英文_如何用Python画一只肥肥的柯基狗狗——turtle库绘制椭圆与弧线实践...
  18. 国家知识产权局一行走访易保全调研区块链,提升相关专利审查工作质效
  19. 算法训练第五十天 | 123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV
  20. pandas datetime与时间戳互相转换,字符串转换datetime

热门文章

  1. 2021年基金从业资格考试时间及报名时间
  2. Eclipse使用教程1
  3. 解决ZooKeeper配置中出现Error contacting service. It is probably not running.
  4. 基于Linux+ARM的远程视频监控--硬件篇
  5. python复数的实部和虚部都是整数嘛_Python数字(Number)
  6. dtree做权限控制
  7. 阿甘修理机器人cd_剑网3遗失的美好现在选什么东西好?
  8. redis实现简单的动态密码
  9. 2020年数学建模国赛B题解题思路
  10. 手把手教你六类网线水晶头接法,超详细教程