C语言学习之初识C语言

1.1C语言概述

1.1.1什么是C语言

我们在日常生活中,用来交流的语言有很多种,最常见的有,汉语,英语,日语,法语等,这些语言都有它们特有的,语法格式和词汇,但是本质上都是用于人与人之间相互交流,传递信息的。

那么我们通过固定格式和语法的“语言”与人交流,同样也可以用“语言”于计算机交流,通过与计算机的信息交互,让它来为我们做事情的,那么这样的语言我们称之为计算机语言,也叫做编程语言,而C语言就是,编程语言的(Programming Langguage)一种。

编程语言用来控制计算机的一系列指令(Instruction),它就像我们人类的语言一样,有固定的格式和词汇(不同编程语言有不同的格式和词汇),在使用编程语言和计算机交流的过程中,我们必须严格的遵守它的格式和词汇,不然就会出现错误,就像我们人与人间之表述不清楚一样,同样,人在做事情当中也会出现错误,从而达不到工作的目的。

同时和人类一样计算机的语言种类也非常之多,它们做应用的领域页不尽相同,总的来说可以分为三大类:

1.机器语言

2.汇编语言

3.高级语言

机器语言:机器语言是指一台计算机的指令集合,电子计算机使用的是“0”和“1”组成的二进制数。二进制数是计算机的语言的基础。计算机发明之初,人们写出了一串串由“0”和“1”组成的指令序列,交由计算机执行。这种只有计算机才能识别的语言我们成为机器语言,即第一代机器语言。

汇编语言:为了减轻使用机器语言的困难,人们对机器语言进行了一次改良,对机器语言做了一次封装,即用一些简洁的英文字母来代替一个特定指令的二进制串,比如用“add”代表加法,“sub”代表减法。计算机语言就有原来的晦涩难懂的二进制数,变成了一个个,可以看的东的英文字母,这样就极大的降低了计算机语言的学习难度,以及开发难度,同时效率提高了,纠错和维护也变得简便,快捷。这种计算机语言我们称之为汇编语言,即第二代计算机语言。

高级语言:那么随着科学的不断发展,逐渐的,汇编语言在面对这个高速发展的社会,也变得不再那么高效。为了进一步的提升生产效率,人们又在原来的基础上发明了高级语言(相对于机器语言和汇编语言而言),它是最接近自然语言和数学公式的编程语言,基本脱离了计算机的硬件系统,用人们更为理解的方式来编写程序。用高级语言编写的程序成为源程序。高级语言不是指某一特定的具体语言,而是包括多种编程语言,这其中包括。Java,python,C,C++,C#等。

1.1.2C语言的特点优势

学习C语言呢,不仅能让你了解与编程相关的概念,还能够,让你明白程序的运行原理,比如计算机的各个部件是如何进行交互的,程序在内存中是一种怎样的状态,操作系统和用户之间有着怎样的关系,等等。

许多语言都是基于C语言开发的,可以说C语言是现代编程语言的“开山鼻祖”,那么C语言究竟有哪些独特的魅力呢?

1.,语言简洁紧凑,使用方便

2.运算符丰富

3.数据类型丰富

4.表达方式灵活

5.允许直接访问物理地址,对硬件进行操作

6.生成的目标代码质量高,程序执行效率高

7.可移植性高

8.表达力强

1.2认识C语言编译环境

目前市场上提供了两种主流的C语言编译软件

1.vsual C++6.0

2.Dev-C++

1.3编写一个简单的程序

【例】在屏幕上输出“同学们,大家好!”(注意:所有标点符号均为英文)

实现步骤如下

步骤1:新建文件

打开Dev-C++后(这里以Dev-C++为例),在菜单栏依次选择[文件]——[新建]——[源代码]

步骤2:编写程序代码

在代码编译区域输入下面代码:
 

#include <stdio.h>      //预处理命令,包含基本输入输出头文件

int main()       //函数值为整型的主函数

{       //函数的开始

printf("同学们,大家好!\n");   //输出函数,\n表示换行,C语言语句结束要在结尾加上分号

return 0;      //函数返回值
}      //函数结束

步骤3:保存文件

编写完成之后选择[文件]——[保存],将会弹出“保存为”对话框,在该对话框中可为文件选择保存路径,并设置文件名和保存路径

步骤4:编译程序

在菜单栏选择[运行]——[编译],程序编译结果显示在编译信息显示区,显示“-错误:0”,“-警告:0”表示程序可以运行。

步骤5:运行程序

在菜单栏选择[运行],程序就可以在弹出的运行框内正常运行了

【代码分析】

代码中的main是主函数的函数名,表示这里使用一个主函数,每一个C语言程序由且仅有一个主函数(main函数)。printf函数的功能是把要输出的内容送到屏幕上显示。printf函数是一个由系统定义的标准函数,可在程序中直接调用。语句“return 0;”表示程序的正常结束。(c语言中return0的含义:1、返回值int类型的函数返回:return语句用来结束循环,或返回一个函数的值。return0:一般用在主函数结束时,按照程序开发的一般惯例,表示成功完成本函数。)

1.4C语言的编译过程

C语言作为高级语言,程序源代码无法被计算机直接识别。从程序源代码文件(*.c)到可执行文件(*.exe)需要经过预处理,编译,汇编,链接四个过程,如图

1.4.1C语言编译过程分析

1.预处理

预处理操作主要处理代码中以“#”开头的预处理语句,预处理完成后,会生成预处理文件(*.i)。

预处理操作主要包括以下几项。

(1)展开所有的宏定义(#define),进行字符替换。

//宏定义又称为宏代换、宏替换,简称为宏。
是 C 语言中最为常用的三种预处理指令之一。

宏定义指令,是由 # 和关键字 define 组合而成的。

它的作用是文本替换,使用标识符来代替替换列表中的内容。
使用宏定义可以提高程序的通用性、易读性,
减少因为输入错误产生的各种问题,同时还便于修改。

(2)处理所有条件编译指令(#ifdef,#ifndef,#endif)

//一般情况下,C语言源程序中的每一行代码都要参加编译。
有时候出于对程序代码优化的考虑,希望只对其中一部分内容进行编译,
此时就需要在程序中加上条件,让编译器只对满足条件的代码进行编译,
将不满足条件的代码舍弃,这就是条件编译

(3)处理条件包含语句(#include),将包含的文件直接插入语句所在处。

(4)删除所有注释。

(5)添加行号和文件标识,以便在调试和编译出错时快速定位到错误所在行。

2.编译

编译操作对预处理文件进行词法分析,语法分析,语义分析后生成汇编文件(*.s)。

3.汇编

汇编操作是指将生成的汇编文件(*.s)“翻译”成计算机能够识别的二进制文件。在linux系统当中的二进制文件是(*.o)的文件,在Windows系统中的二进制文件是(*.obj)文件。

4.链接

生成二进制文件后,文件尚不能运行,若想运行文件,需要将二进制文件于代码中用到的库文件进行绑定,这个过程成为链接。链接操作完成后将生成可执行文件。

什么是库文件,库文件有什么作用

库文件是一类计算机上的文件,它们提供了预制的变量、函数或类,以便于开发者能够复用这些功能而无需重新编写。库文件可以分为静态库动态库两种类型:

  1. 静态库:在编译阶段,静态库的文件内容会被复制到最终的 executable(可执行文件)中。这意味着静态库的内容不会被重复加载,因为它是预先构建并包含在可执行文件内的。静态库的使用可以提高程序的可移植性和独立性,但它会增大可执行文件的大小。

  2. 动态库:与静态库不同,动态库通常不会在编译后被复制到可执行文件中。而是在程序运行时,由操作系统动态加载到内存中。这样,不同的程序可以通过相同的动态库文件共享相同的数据和函数,从而减少内存占用并方便模块化的更新。动态库的使用有助于优化内存管理,并且由于它们可以被多个程序共享使用,可以减少每个程序所需的单独库文件的数量。

库文件的另一个用途是在配置管理系统如Codesys中,它们可以用来存储可多次使用的程序组织单元(Program Unit, PU)。这些PU可以是用户自定义的功能块、函数或程序,它们可以在不同的项目之间复制和使用,从而提高了编程效率。

总结来说,库文件的作用主要包括:

  • 提供预制的代码片段,允许开发者复用代码。
  • 通过静态链接或动态链接,使代码能够在不增加额外可执行文件大小的情况下被访问。
  • 简化代码维护和升级过程,通过共享资源实现高效的开发环境。
  • 在某些情况下,如Codesys配置管理系统中,库文件还用于存储和管理可重用的程序组织单元。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值