历史

C 语言是一门面向过程的计算机编程语言,于 1972 年诞生于贝尔实验室。

C 语言是丹尼斯·里奇(Dennis Ritchie)以 B 语言为基础发展而来,因此他被称为 C 语言之父

C 语言为什么命名为 C ?

1967 年,剑桥大学的 Martin Richards 对 CPL(Combined Programming Language)语言进行了简化,于是产生了 BCPL(Basic Combined Programming Language)语言

1969 年,美国贝尔实验室的肯·汤普森(Ken Thompson),以 BCPL 语言为基础,设计出很简单且很接近硬件的 B 语言(取 BCPL 的首字母),并且用 B 语言写了初版 Unix 操作系统

1972 年,美国贝尔实验室的丹尼斯·里奇(Dennis Ritchie)在 B 语言的基础上最终设计出了一种新的语言,他取了 BCPL 的第二个字母 C 作为这种语言的名字,这就是 C 语言

1973 年初,C 语言的主体完成。汤普森和里奇用它完全重写了 Unix。

随着 Unix 的发展,C 语言自身也在不断地完善。

截至目前,各种版本的 Unix 内核和周边工具仍然使用 C 语言作为最主要的开发语言。

1982年,美国国家标准协会(ANSI)为了使 C 语言健康地发展下去,决定成立 C 标准委员会,建立 C 语言的标准。

1989 年,ANSI 发布了第一个完整的 C 语言标准,简称 C89,也称其为 ANSI C

1990 年,国际标准化组织 ISO(International Standard Organization)一字不改地采纳 C89,发布 C90

1999 年,在做了一些必要的修正和完善后,ISO 发布 C99

2011 年,ISO 发布 C11

2018 年,ISO 发布 C17(也被称为 C18)。

2022 年,ISO 发布 C23

编译器

  • GCC:GNU Compiler Collection 的缩写,GNU 组织开发的开源免费的编译器(常用)。
  • MinGW:Minimalist GNU for Windows 的缩写,Windows 操作系统下的GCC。
  • Clang:开源的 BSD 协议的基于 LLVM 的编译器。
  • Visual C++:Microsoft VC++ 自带的编译器。

Hello World

学习一门语言写的第一个程序就是 Hello World,这既是基础,也是仪式:

#include<stdio.h>

int main()
{
printf("Hello World\n");
return 0;
}

简单来说,一个C程序就是由若干 头文件函数 组成。

  • #include <stdio.h> 是一条预处理命令, 它的作用是通知 C 语言编译系统在对 C 程序进行正式编译之前需做一些预处理工作。
  • 函数 就是实现代码逻辑的一个小的单元。(注意:C 程序一定是从主函数开始执行的)
  • \n 是转义字符中的换行符。

C语言 01 概述的更多相关文章

  1. 重学C语言---01概述

    1.什么是C语言 C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点.计算机语言是从第二次世界大战以后,经历了戏剧性的发展过程.从机器语言到汇编语言和高级语言.C语言是与硬件 ...

  2. Linux下c语言环境概述

    Linux下C语言环境概述 主要涉及编辑器.编译链接器.调试器.项目管理工具 编辑器 Linux中常用的编辑器有vi和emacs 查看vim配置文件并编辑 编译链接器 在Linux中,最常用的编译器是 ...

  3. 2017.12.23 第二章 统一建模语言UML概述

    第二章 统一建模语言UML概述 (1)为什么要建模 模型是某个事物的抽象,其目的是在构建这个事物之前先来理解它,因为模型忽略了那些非本质的细节,这样有利于更好的理解和表示事物: 在软件系统开发之前首先 ...

  4. kafka详解(01) - 概述

    kafka详解(01) - 概述 定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域. 消息队列 MQ传统应用场景之异步处理 使用消 ...

  5. Zookeeper详解(01) -概述

    Zookeeper详解(01) -概述 概念 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目. Zookeeper从设计模式角度来理解,是一个基于观察者模式设计的分 ...

  6. c语言01次作业--分支,顺序结构

    C语言--第01次作业 1.1思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 本章学习让我体会良多.首先,不得不承认自己是一个非常马虎的人.常见的问题就是输出格式上常因为没有与题目要 ...

  7. 【OracleDB】 01 概述和基本操作

    实例概念: Oracle有一个特殊的概念 Oracle数据库 = 数据库 + Oracle文件系统 + Oracle实例 实例处理Oracle的请求,调用文件系统 然后返回结果响应给客户端 单实例和多 ...

  8. C语言的概述--学习c的第二天

    以下是整理的知识点: #include <stdio.h>/* 引入stdio.h文件c的标准函数库 */ int main(void)/* 定义一个函数main(),int定义函数返回的 ...

  9. C语言 01 形参实参

    之前的都在印象笔记记录 continue 结束本轮循环体,进入下一次循环.break 直接结束整个while循环 形参:定时函数时函数名后面中的参数实参:调用函数时传入的具体数据基本数据类型作为形参, ...

  10. java语言特性概述

    一.前言 我们都知道java是面向对象的编程,其中四个基本特性:抽象.封装.继承.多态.这四个特性,概括起来可以这么理解,抽象.封装.继承是多态的基础,多态是抽象.封装.继承的表现. 二. JAVA ...

随机推荐

  1. 【LeetCode哈希表#5】四数相加II(map)

    四数相加II 力扣题目链接(opens new window) 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + ...

  2. eclipse c++ 安装

    eclipse及其插件安装 对于我这种被VS惯坏了的人来说,make file 非常不友好的,最近要在redhat 下面去编译c++动态库和应用程序,原有的工程是在window下面的,要到linux下 ...

  3. [C++] 进程注入dll版

    目录 前言 前提 原理 代码 一些问题 前言 这几天在弄进程注入的事情,一直做不出来直接的进程注入,也就是不要dll的注入.因为dll注入据说容易触发杀软,但是弄了两天没弄出来.代码明明不报错,目标进 ...

  4. Github无法读取远程仓库

    主页 个人微信公众号:密码应用技术实战 个人博客园首页:https://www.cnblogs.com/informatics/ Git无法访问 今早起来访问Github炸了,Git不能用了,提示: ...

  5. nvm-windows 安装遇到的问题 node目录卸载后(有残留)记得改名

    需求 网上好多新项目都需要最新版的node,所有需要切换node版本 nvm-windows https://github.com/coreybutler/nvm-windows 安装步骤-问题 删除 ...

  6. tag 转 分支 branch

    获得最新 git fetch origin 获取tag git tag tag 转 branch git branch newbranch vtest.1.0.FINAL --- git branch ...

  7. Prometheus常用exporter及其常用监控指标

    node-exporter常用监控指标 CPU相关指标: node_cpu_seconds_total{mode="idle"}:CPU空闲时间(秒)的总和.这是评估CPU使用率的 ...

  8. StatefulSet是怎样实现的

    StatefulSet是Kubernetes中用于管理有状态应用的标准实现.与Deployment不同,StatefulSet为每个Pod提供了一个唯一的.稳定的网络标识符,并且Pod的启动和停止顺序 ...

  9. python librosa 实例解析

    一 概念 librosa是一个用于音乐和音频分析的python包.它提供了创建音乐信息检索系统所需的构建块. 核心函数:   二 实例解析   实例A,确认是否安装成功: import librosa ...

  10. Android 自定义View模板代码记录

    原文地址:Android 自定义View模板代码记录 - Stars-One的杂货小窝 每次写自定义View,需要重写3个构造方法,如果使用Android Studio直接创建,会导致View代码过多 ...