• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

游客您好
第三方账号登陆
  • 点击联系客服

    在线时间:8:00-16:00

    客服QQ

    2938366614

    电子邮件

    pcs2938366614@163.com
  • Y智能分享

    随时随地学习编程

  • 扫描二维码

    关注微信公众号

讲师介绍
超级管理员
Y智分享官方账号
  • 牛气冲天

    2021新春活动专属
  • 老兵专属

    老用户专属勋章
  • 原创达人

    原创帖子超过30个
  • 邀请大使

    邀请人数超过10人
学员动态
暂无任何学员

C语言入门教程1—概述

  [复制链接]
admin官方认证 永久VIP 发布认证 发表于 2020-2-20 17:57:38 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
一、计算机常识/ B5 j7 ~8 `; x0 K% R
9 c9 I- p: E6 e1 A
在学习C语言之前,先要了解一些计算机常识6 G7 W7 }! d1 D% O6 l8 _1 ~
1.计算机只能识别0和1
5 T  V$ I+ H. b7 a! I7 s8 s% L6 \# ~9 _4 W
大家都知道,计算机要通电才能工作,说白了,它跟电视、洗衣机一样,都是电器。电器都有个共同的能力:懂得判断通电还是断电,通电就能工作,断电就停止工作。因此,从根本上讲,计算机只能识别电信号:高电平信号(通电)、低电平信号(断电),它只知道某个开关是通电还是断电。我们用1代表高电平,0代表低电平。4 s$ t8 I1 `5 J  z, c6 b
也就说,计算机只能识别0和1。8 Y8 G8 z+ z& f3 A

, B4 l6 D2 `9 O& Y2.二进制
  ^8 e, z( `- q* D  K* E; M- B2 v5 X
因为计算机只能识别0和1,因此计算机所能识别的指令和数据都是用二进制数(0和1)来表示的。所谓二进制,就是用0和1来表示所有的数。不过我们日常生活中最常用的是十进制,用0~9来表示所有的数" E9 u( b+ q; P) [7 }* U

$ e( ]: X' v3 Q* ^" g! j3 _0 x9 ]
1> 二进制指令
& `' k) U" y1 W$ O
$ e+ F% D# `5 v1 E1 v6 f* Q& @
给计算机灌输一些指令,它就能执行相应的操作,而计算机只能识别由0和1组成的指令。在计算机发展初期,计算机的指令长度为16,即以16个二进制数(0或1)组成一条指令,例如,用1011011000000000这条指令,是让计算机进行一次加法运算。因此,如果要想计算机执行一系列的操作,就必须编写许多条由0和1组成的指令,可以想象的到,这个工作量是如此巨大。  @0 I( W- |2 {: |% s2 p
# ^  @7 @5 W) c, x
2> 二进制数据/ z4 Z- N, ?$ K2 f" ]' q
) `; n# h$ ~0 i6 Y( L+ @6 @: G
平时我们在计算机中存储的一些数据,比如文档、照片、视频等,都是以0和1的形式存储的。只不过计算机解析了这一大堆的0和1,以图形界面的形式将数据展示在我们眼前。% e! K. ?, _! T. {/ Q! ]1 [
: a( U: L' x) O. B* m+ M1 ^
5 ~# I7 N6 O% ~
7 C" P& I3 {' c  {. O9 Z

5 k( `/ J/ e4 G2 A: C% ~二、程序设计语言发展史, I. u0 z& `1 F/ A
- g9 Q2 k( C- L1 X3 q
我们可以利用程序设计语言来编写程序,再将编好的程序运行到计算机上,计算机就能够按照程序中所说的去做。从计算机诞生至今,程序设计语言大致经历了3个发展阶段:机器语言、汇编语言、高级语言。其中,C语言属于高级语言。. T" V; h2 v$ G6 o6 i$ m
1.机器语言: q! ~8 j) h% Z& W7 U6 c# i0 H
3 v! s8 |( I4 @$ \
1> 什么是机器语言
; x) l. i( W( Y3 Q8 A6 e) n' J$ C0 w! ^  |) `: _/ z# f4 L
在计算器诞生初期, 所有的计算机程序都是直接用计算机能识别的二进制指令来编写的,也就是说所有的代码里面只有0和1。这种程序设计语言就是“机器语言”。这些由0和1组成的二进制指令,又叫做“机器指令”# c/ u8 }9 r7 \! U5 |$ @

( z# V& k# X( U1 a* E3 ^0 D& I2> 优点
* q" G. U' H! K& @5 Y4 A
2 U# _- s, ?, w$ B  F4 F* K由于机器语言编写出来的代码是能被计算机直接识别的,因此机器语言是直接对硬件产生作用的,程序的执行效率非常高。; K- o4 V1 v2 b) c% W
机器语言能直接访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。4 l. a! n8 b6 c

& Y4 B1 |5 ^" D- N/ r3> 缺点
  g) D  ?7 h7 E" u( o# [( o0 L
# `$ P; ^& j3 {8 v* d  v
用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令和指令的涵义,指令又多又难记。, m# }! P6 L5 x! Y% |, w
编出的程序全是些0和1的指令代码,可读性差,还容易出错。
9 ]; [' I4 ~( T# {由于机器语言是直接对硬件产生作用的,对硬件的依赖性很强,因此不同型号计算机的机器语言又不一样。也就是说,如果2台不同型号的机器想实现一样的功能,需要编写2套完全不同的代码。9 V: T* ~3 j. s0 \! G
可以看出,机器语言很难掌握和推广,现在除了计算机生产厂家的专业人员外,绝大多数的程序员已经不再去学习机器语言了。
  j! a6 B! p5 K0 @; N/ K( P- K" a
3 K- [- I$ j$ z6 H2.汇编语言
5 H/ y6 D+ {+ c7 g+ t0 H  p0 g% K. A: B" H) Q
1> 什么是汇编语言: b/ ^% Z6 q9 J7 g

9 j5 x) X# O: ^8 L* C. m8 f! q由于机器语言的种种弊端,严重影响开发效率,后面就出现了汇编语言。汇编语言其实就是符号化的机器语言,它用一个符号(英文单词、数字)来代表一条机器指令。比如,在机器语言中,用1011011000000000这条指令,是让计算机进行一次加法运算;而在汇编语言中,用英文单词“ADD”就可以表示加法运算。一个有意义的英文单词,很明显比一串又臭又长的二进制指令,直观好记多了。
6 o8 D5 u1 u# K1 g. U( ^由于计算机只能识别0和1,用汇编语言编写的代码是不能被计算机所识别的,像刚才的“ADD”,计算机肯定不知道是什么意思。因此,用汇编语言编写的代码需要翻译成二进制指令后,才能被计算机识别。这个翻译的工作交给“编译器”去做。
( _% T9 l$ Y! V3 N) x) ^- [ ; n# d) O3 ~! m# b
2> 优点
. ~% @' m! b& {) I( f
) k" E( h- O( `, t$ y' r
对比机器语言,汇编语言的代码可读性好
! z/ C& C. I1 g1 Q& m  I! k% r8 o汇编语言能像机器语言一样,可以直接访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。使用汇编语言,可以访问所有能够被访问的软、硬件资源。+ Y& n# O3 T+ o  H6 k9 q# ]
目标代码简短(目标代码就是经编译器翻译过后的二进制代码),占用内存少,执行速度快。(计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。)计算机的内存是有限的,因此一个应用程序运行时所占用的内存越少越好。
5 k9 }3 z/ @! `" S+ @$ ~0 M* v4 j( x# r
3> 缺点7 u% C2 ^6 i5 T$ Q! [

4 r( v+ e+ b( Q& V3 |5 Y4 ]  J汇编语言是面向机器的,通常是为特定的计算机或系列计算机专门设计的。因此,不同的机器有不同的汇编语言语法和编译器,代码缺乏可移植性,也就是说,一个程序只能在一种机器上运行,换到其他机器上就不能运行。
1 F0 O4 W! O& h$ x9 T1 o汇编语言的符号非常多、难记,即使是完成简单的功能也需要大量的汇编语言代码,很容易产生BUG,难于调试
4 M3 n8 w' z$ m  r3 J" H9 }2 e使用汇编语言必须对硬件非常了解,开发效率很低,周期长且单调。
% z3 P% h9 n' ]3 e' N2 h

. F2 W, E9 v+ R* B3.高级语言1 v# g; T, B  N7 p
  [* \# V' t( S/ [
由于汇编语言依赖于硬件,代码可移植性差,符号又多又难记,于是人类就发明了非常接近自然语言的高级语言。后面要学习的C语言就是高级语言。3 ?% r* y+ ^# }3 n. y
1> 优点
! ^! T+ |  ]5 C; c8 y  G: J9 W
  x- s1 B3 c! i0 l3 j0 I" y* f简单、易用、易于理解,语法和结构类似于普通英文,且远离对硬件的直接操作,使得一般人经过学习之后都可以编程,而不用太熟悉硬件知识
$ F7 ^; T% I& C! T4 h, [写出来的程序更加简洁。比如要计算2个数的和,在高级语言中可以写得非常简洁:d=a+b;。但是在机器语言和汇编语言中,就需要几条甚至几十条指令,而且不同机器还要编写不同的指令代码
" ]4 _3 s* K1 m5 ~% Z$ V2 d用高级语言编写的同一个程序还可以在不同的机器上运行,具有可移植性' W' V8 c: y, m! m% b3 [

4 a" a* W- F1 E2> 注意. u0 j& t9 F0 r, Q- {7 I, o" b6 x

6 S- Y" D) C& g) r* D用高级语言编写的程序不能直接被计算机识别,需要经编译器翻译成二进制指令后,才能运行到计算机上
: f) P6 v- _- _; \: O# q. Q! n9 w ! o7 U' i6 @8 t/ j1 w% @
. `5 @5 Q# x5 S( l# l# {
7 f  {3 ^, r2 c4 M. \3 s- w3 C/ v7 X* s

! S6 x3 c5 M, E4 L$ Z/ r" I三、C语言简史
# x0 }, M. ~7 v3 {- F# {

" F/ l5 l- ~8 UC语言于1972年发明,首次使用是用于重写UINX操作系统(UNIX以前主要是用汇编语言写的,它奠定了操作系统的基础)
+ l7 S; @) v( t- v. {: T' Z$ X  ]/ s; P2 N/ k8 v- J! d
随着UNIX操作系统的成功,C语言也得到了大幅度地推广,被先后使用到大、中、小、微型主机上,至今还是世界上最流行、使用最广泛的高级程序设计语言之一! e( t# q$ D6 D4 g( q& b1 I+ H0 i
3 l% a6 Y* t6 P' J7 v. {' U# R4 {
C语言是一门面向过程的语言,非面向对象的语言。(究竟什么是面向过程、面向对象,暂时不用去理解,只需要知道C语言是面向过程就Ok了)/ U0 i! p% g6 s6 h8 J2 `3 v

) ~& T( K: N1 n9 S/ n' w
5 m# r, ?4 u1 t- k4 J" f& u* P- r8 B% \- B7 c

/ h2 S+ R1 E4 {) s# {8 j% }8 w$ a- a四、C语言的特点5 k& I, m; ~# X( H$ X  h

& \  r' `& N" R. P6 C1.丰富的运算符
5 o" K( D, |! x) |- [% {1 K3 a5 Z) K/ f7 K
计算机的基本功能就是计算,因此一门程序设计语言的计算能力是非常重要的。C语言提供了34种运算符,计算类型极其丰富,其中包括了最基本的加减乘除运算。! [+ b" V# T* P1 [& j) H9 G

1 C/ W5 N; _4 ^6 V- R; G8 r2.丰富的数据类型! }! R; a" k6 v  L3 P
0 n, @' v& y. k2 g
C语言的生命力之所以如何强大,很大一部分是因为它拥有丰富的数据类型。. b3 r0 M& d# \% F" P
正因为C语言数据类型丰富,运算能力极强,因此很多数据库都是用C语言编写的,比如DB2、Oracle等。9 B9 y# J; V% }" M" k
0 }+ o3 H1 y  x1 g0 }
3.可以直接操作硬件
( J- M5 U' F" D5 [, n5 w
  [$ O8 q6 m" M" ?; O# {0 a
跟汇编语言一样,C语言可以直接操作硬件,允许直接对位、字节、地址进行操作(位、字节、地址是计算机最基本的工作单元),可以说几乎没有C语言做不了的事情。5 C$ ^2 _/ j, Q6 R! ^
, W! y6 f4 {( @
4.高效率的目标代码
5 n, ]( z& A% j
% L0 D  V2 t" m/ N; G0 [目标代码,就是经编译器翻译后的二进制代码。C语言的目标代码执行效率非常高。+ N! T1 {4 H$ I2 ?
0 q: i0 O9 X( D; {2 T
5.可移植性好
2 h, @+ f; y8 n0 E
& Y$ d' l$ D# H6 x* A3 |  E在一个环境上用C语言编写的程序,不改动或稍加改动,就可移植到另一个完全不同的环境中运行。
$ l3 T3 a# u- h1 e; E2 y; g 8 M  P; g. L( J
上面所说的都是C语言的优点,它有个非常明显的缺点:语法限制不严格。这样就导致初学者对C语言语法不能理解得很透彻,而且在开发过程中也会带来很多容易忽略的问题。
; |, w6 e3 R7 z3 B+ m" O& e0 w3 ?7 \$ E% m
6 U1 e* p% F( N0 L

* K( f# s' _+ e$ H# w/ m

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
客服QQ:2938366614

精彩评论196

中国龙 发表于 2020-2-20 18:02:58 | 显示全部楼层
好帖必须得顶起
4 H8 R) ]4 e% f
该用户还没有理想!
蓝河 发表于 2020-2-20 18:02:58 | 显示全部楼层
前排,哇咔咔, z# m9 Z4 K# Y& F7 b* q
该用户还没有理想!
YYYPT 发表于 2020-2-20 18:02:58 | 显示全部楼层
珍爱生命,果断回帖。2 c: J+ r. |% y. E4 B2 |
该用户还没有理想!
三K(陈日阳) 发表于 2020-2-20 18:02:58 | 显示全部楼层
支持楼主,用户楼主,楼主英明呀!!!
) W0 Z) a' l6 ]3 K
该用户还没有理想!
床谈何言 发表于 2020-2-20 18:02:58 | 显示全部楼层
发发呆,回回帖,工作结束~
& M7 }1 @8 i' c6 O% K, E1 C! l4 ?
该用户还没有理想!
花雨 发表于 2020-2-20 18:02:58 | 显示全部楼层
我了个去,顶了# g$ t" _( n: y4 X: O' f% Z
该用户还没有理想!
风雨同路 发表于 2020-2-20 18:02:58 | 显示全部楼层
边撸边过9 b# E9 X4 Z) D
该用户还没有理想!
gdzwx 发表于 2020-2-20 18:02:58 | 显示全部楼层
支持楼主,用户楼主,楼主英明呀!!!3 O6 C; c( z" O7 n- H
该用户还没有理想!
陈振毅 发表于 2020-2-20 18:02:58 | 显示全部楼层
路过
) A+ p& ~' }$ u4 Q4 l2 u
该用户还没有理想!
懒得打字嘛,点击右侧快捷回复 【Y智能分享专属】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发现新世界,Y智能分享! 立即登录 立即注册
关于我们
  • 关注官方微信

  • QQ在线客服

    在线联系
  • Y智能分享
  • 山东省菏泽市
Copyright  ©2019- PCSZNY.CN Inc.Y智能分享