C语言基础:C语言简介、C语言结构(hello world为例)、C程序运行流程

news/2025/6/1 15:21:54

1. C语言简介

简介:

C 语言是一种通用的高级语言,最初是由丹尼斯·里奇贝尔实验室为开发 UNIX 操作系统而设计的。C 语言最开始是于 1972 年在 DEC PDP-11 计算机上被首次实现。

在 1978 年,布莱恩·柯林汉(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)制作了 C 的第一个公开可用的描述,现在被称为 K&R 标准。

UNIX 操作系统,C编译器,和几乎所有的 UNIX 应用程序都是用 C 语言编写的。由于各种原因,C 语言现在已经成为一种广泛使用的专业语言。

C语言优点:

  • 易于学习。
  • 结构化语言。
  • 它产生高效率的程序。
  • 它可以处理底层的活动。
  • 它可以在多种计算机平台上编译。

关于C:

  • C 语言是为了编写 UNIX 操作系统而被发明的。
  • C 语言是以 B 语言为基础的,B 语言大概是在 1970 年被引进的。
  • C 语言标准是于 1988 年由美国国家标准协会(ANSI,全称 American National Standard Institute)制定的。
  • 截至 1973 年,UNIX 操作系统完全使用 C 语言编写。
  • 目前,C 语言是最广泛使用的系统程序设计语言。
  • 大多数先进的软件都是使用 C 语言实现的。
  • 当今最流行的 Linux 操作系统和 RDBMS(Relational Database Management System:关系数据库管理系统) MySQL 都是使用 C 语言编写的。

为什么要使用 C?

C 语言最初是用于系统开发工作,特别是组成操作系统的程序。由于 C 语言所产生的代码运行速度与汇编语言编写的代码运行速度几乎一样,所以采用 C 语言作为系统开发语言。下面列举几个使用 C 的实例:

  • 操作系统
  • 语言编译器
  • 汇编器
  • 文本编辑器
  • 网络驱动器
  • 数据库
  • 语言解释器

2. C语言结构

C 程序主要包括以下部分:

  • 预处理器指令
  • 函数
  • 变量
  • 语句 & 表达式
  • 注释

2.1 代码示例

说明:我的编译器是Dev-C++

在这里插入图片描述

#include <stdio.h>int main()
{/* 我的第一个 C 程序 */printf("Hello, World! \n");return 0;
}

运行结果:

在这里插入图片描述

解释:

  1. 程序的第一行 #include <stdio.h> 是预处理器指令,告诉 C 编译器在实际编译之前要包含 stdio.h 文件。
  2. 下一行 int main() 是主函数,程序从这里开始执行。
  3. 下一行 // 将会被编译器忽略,这里放置程序的注释内容。它们被称为程序的注释。
  4. 下一行 printf(…) 是 C 中另一个可用的函数,会在屏幕上显示消息 “Hello, World!”。
  5. 下一行 return 0; 终止 main() 函数,并返回值 0。

3. C程序运行流程

在这里插入图片描述

  1. 预处理阶段:预处理器(cpp)对源程序中以字符#开头的命令进行处理,例如将#includ命令后面的.h文件内容插入程序文件。输出结果是一个以.i为扩展名的源文件 hello.i。
  2. 编译阶段:编译器(ccl)对预处理后的源程序进行编译,生成一个汇编语言源程序hello.s。汇编语言源程序中的每条语句都以一种文本格式描述了一条低级机器语言指令。
  3. 汇编阶段:汇编器(as)将 hello.s 翻译成机器语言指令,把这些指令打包成一个称为可重定位目标文件的hello.o,它是一种二进制文件,因此在文本编辑器中打开它时会显示乱码。
  4. 链接阶段:链接器(ld)将多个可重定位目标文件和标准库函数合并为一个可执行目标文件,或简称可执行文件。本例中,链接器将hello.o和标准库函数prinft所在的可重定位目标模块prinft.o合并,生成可执行文件 hello。最终生成的可执行文件被保存在磁盘上。

说明:

这是计算机组成原理的基础知识。



文章来源:https://codejiao.blog.csdn.net/article/details/121984141
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://dhexx.cn/news/show-1118966.html

相关文章

程序员鼓励师都干啥? 按摩谈心样样通

程序员鼓励师引起大家注意最早是魅族和阿里等公司发布的招聘启示&#xff0c;招聘内容中有几个明显的关键词&#xff1a;“苍老师&#xff0c;宋慧乔&#xff0c;独孤九剑......” 而在招聘启示中&#xff0c;程序员鼓励师的主要工作就是&#xff1a;“有效鼓励程序员团队&…

L2-039 清点代码库

L2-039 清点代码库假设两个功能模块如果接受同样的输入&#xff0c;总是给出同样的输出&#xff0c;则它们就是功能重复的&#xff1b;其次我们把每个模块的输出都简化为一个整数&#xff08;在 int 范围内&#xff09;。于是我们可以设计一系列输入&#xff0c;检查所有功能模…

那个你身边悄悄离职的人去哪儿了?IT人才流动大盘点

互联网专业人才的数量满足不了市场大规模的需求&#xff0c;所以这个行业工作机会多、薪酬水平高的同时流动性也非常大。那么&#xff0c;你身边那个悄悄离职的人去哪儿了呢&#xff1f; 1、BAT互跳频繁&#xff0c;百度成跳槽鄙视链底端 互联网行业的三大巨头&#xff0c;百度…

C语言基础:C语言基本语法(C 的令牌(Token)、分号 、注释、标识符、关键字)

1. C语言基本语法 1.1 C 的令牌&#xff08;Token&#xff09; C 程序由各种令牌组成&#xff0c;令牌可以是关键字、标识符、常量、字符串值&#xff0c;或者是一个符号。例如&#xff0c;下面的 C 语句包括五个令牌&#xff1a; printf("Hello, World! \n");这五…

为silverlight页面创建根页面BasePage

在进行WINFORM编程的时候&#xff0c;我们往往会让所有的FORM继承一个BASEPAGE。在BasePage中&#xff0c;往往可以引用一些全局变量或者进行用户权限判断。同样&#xff0c;在SILIVERLIGHT编程的时候&#xff0c;我们也可以这样来实现。 首先&#xff0c;创建类BasePage&#…

定制json序列化

最近有人问我怎么定制一个json序列化&#xff0c;使序列化的时候只写出声明的父类成员&#xff0c;而不要把实际子类的成员写出来。当然&#xff0c;序列化用的是大家用的最多的json.net。 简单的说&#xff0c;这是个契约怎么解析的问题&#xff0c;json.net选择使用实际类型自…

Debug版有什么优势?

Debug版有什么优势?答:方便定位错误,下面举例说明.一,新建一个基于对话框的工程DebugDlg.二,增加一个编辑框,ID为IDC_EDIT1.三,增加一个按钮,ID为IDC_BUTTON1,标题为"隐藏".为此按钮增加响应函数. void CDebugDlgDlg::OnButton1() { CWnd * pWnd GetDlgIt…

L2-040 哲哲打游戏

L2-040 哲哲打游戏假设游戏有 N 个剧情点&#xff0c;通过游戏里不同的操作或选择可以从某个剧情点去往另外一个剧情点。此外&#xff0c;游戏还设置了一些存档&#xff0c;在某个剧情点可以将玩家的游戏进度保存在一个档位上&#xff0c;读取存档后可以回到剧情点&#xff0c;…

钱多离家近,美国东南部“硅谷”了解一下

当我们谈起美国IT公司时&#xff0c;我们会首先想到硅谷&#xff0c;旧金山和西雅图的名字紧随其后。IT产业巨头亚马逊、谷歌和苹果等公司都是在这些tech hub起家&#xff0c;但&#xff0c;在硅谷工作是最适合你的吗&#xff1f; 这个问题也许很难回答&#xff0c;但是每个城市…

Linux下的静态库和动态库 - yg2362 - C++博客

Linux下的静态库和动态库 - yg2362 - C博客Linux下的静态库和动态库1.制作自己的动态库和静态库linux下动态库以.so结尾&#xff0c;静态库以.a结尾&#xff0c;它们都以lib开头&#xff0c;比如一个库名为net,那么它的全名应该是libnet.so或者libnet.a。我们有两个文件&#x…