C语言扫盲篇

                                         作者:尹正杰

版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

一.什么是C语言

  C 语言是一种通用的高级语言,最初是由丹尼斯·里奇在贝尔实验室为开发 UNIX 操作系统而设计的。C 语言最开始是于 1972 年在 DEC PDP-11 计算机上被首次实现。在 1978 年,布莱恩·柯林汉(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)制作了 C 的第一个公开可用的描述,现在被称为 K&R 标准。

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

    1>.易于学习。

    2>.结构化语言。

    3>.它产生高效率的程序。

    4>.它可以处理底层的活动。

    5>.它可以在多种计算机平台上编译。

二.为什么要使用 C语言

  一个 C 语言程序,可以是 3 行,也可以是数百万行,它可以写在一个或多个扩展名为 ".c" 的文本文件中,例如,hello.c。您可以使用 "vi""vim" 或任何其他文本编辑器来编写您的 C 语言程序。

1.C语言的应用场景

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

    a>.操作系统;

    b>.语言编译器;

    c>.汇编器;

    d>.文本编辑器;

    e>.打印机;

    f>.网络驱动器;

    g>.现代程序;

    h>.数据库;

    i>.语言解释器;

    j>.实体工具;

2.C语言的风流史

  a>.C 语言是为了编写 UNIX 操作系统而被发明的;

  b>.C 语言是以 B 语言为基础的,B 语言大概是在 1970 年被引进的;

  c>.C 语言标准是于 1988 年由美国国家标准协会(ANSI,全称 American National Standard Institute)制定的;

  d>.截至 1973 年,UNIX 操作系统完全使用 C 语言编写;

  e>.目前,C 语言是最广泛使用的系统程序设计语言;

  f>.大多数先进的软件都是使用 C 语言实现的;

  g>.当今最流行的 Linux 操作系统和 RDBMS(Relational Database Management System:关系数据库管理系统) MySQL 都是使用 C 语言编写的;

3.C11介绍

  C11(也被称为C1X)指ISO标准ISO/IEC 9899:2011,是当前最新的C语言标准。在它之前的C语言标准为C99。存在以下新特性: 

    a>.对齐处理(Alignment)的标准化(包括_Alignas标志符,alignof运算符,aligned_alloc函数以及<stdalign.h>头文件)。  

    b>._Noreturn 函数标记,类似于 gcc 的 __attribute__((noreturn))。

    c>._Generic 关键字。

    d>.多线程(Multithreading)支持,包括:_Thread_local存储类型标识符,<threads.h>头文件,里面包含了线程的创建和管理函数。
_Atomic类型修饰符和<stdatomic.h>头文件。

    e>.增强的Unicode的支持。基于C Unicode技术报告ISO/IEC TR 19769:2004,增强了对Unicode的支持。包括为UTF-16/UTF-32编码增加了char16_t和char32_t数据类型,提供了包含unicode字符串转换函数的头文件<uchar.h>。

    f>.删除了 gets() 函数,使用一个新的更安全的函数gets_s()替代。

    g>.增加了边界检查函数接口,定义了新的安全的函数,例如 fopen_s(),strcat_s() 等等。

    h>.增加了更多浮点处理宏(宏)。

    i>.匿名结构体/联合体支持。这个在gcc早已存在,C11将其引入标准。

    j>.静态断言(Static assertions),_Static_assert(),在解释 #if 和 #error 之后被处理。

    k>.新的 fopen() 模式,("…x")。类似 POSIX 中的 O_CREAT|O_EXCL,在文件锁中比较常用。

    l>.新增 quick_exit() 函数作为第三种终止程序的方式。当 exit()失败时可以做最少的清理工作。

三.各个操作系统安装C语言

1.windows

  为了在 Windows 上安装 GCC,您需要安装 MinGW。为了安装 MinGW,请访问 MinGW 的主页 www.mingw.org,进入 MinGW 下载页面,下载最新版本的 MinGW 安装程序,命名格式为 MinGW-<version>.exe。

  当安装 MinWG 时,您至少要安装 gcc-core、gcc-g++、binutils 和 MinGW runtime,但是一般情况下都会安装更多其他的项。添加您安装的 MinGW 的 bin 子目录到您的 PATH 环境变量中,这样您就可以在命令行中通过简单的名称来指定这些工具。当完成安装时,您可以从 Windows 命令行上运行 gcc、g++、ar、ranlib、dlltool 和其他一些 GNU 工具。

a>.点击“next”

b>.确认安装版本,点击“next”

c>.指定安装路径

d>.等待安装完毕

2.Linux安装方法

  linux安装方式特别的简单。在命令行中键入“[root@yinzhengjie ~]# yum -y install make gcc gcc-c++”即可。然后验证是否安装成功:

3.mac os安装方式

  如果您使用的是 Mac OS X,最快捷的获取 GCC 的方法是从苹果的网站上下载 Xcode 开发环境,并按照安装说明进行安装。一旦安装上 Xcode,您就能使用 GNU 编译器。Xcode 目前可从 developer.apple.com/technologies/tools/ 上下载。

4.安装操作环境安装方式

  termux是 可以在Android操作系统中模拟Linux环境的终端应用程序,可以直接安装在无root权限的安卓环境下。自动地安装了一个最小的基本系统——可以使用类似Debian系统阵营中的APT包管理器提供额外的软件包。在Termux下可以直接安装 gcc 、Vim、nano、Python、w3m 甚至是 php + composer

  在Termux中可以开启SSHD使用ssh客户端远程连接(包括在安卓本地使用类似ConnectBOT管理工具连接),可以做到和在类Unix系统中同样的使用gcc进行c语言文件的编译。Termux官网 : https://termux.com/

四.用C语言书写“Hello World”

 [root@yinzhengjie c]# pwd
/yinzhengjie/c
[root@yinzhengjie c]# ll
总用量
-rw-r--r--+ root root 12月 : hello.c
[root@yinzhengjie c]# more hello.c
#include <stdio.h> int main()
{
/*我的第一个C程序*/
printf("My name is yinzhengjie! \n");
return ;
} /*接下来我们讲解一下上面这段程序:*/
/* 程序的第一行 #include <stdio.h> 是预处理器指令,告诉 C 编译器在实际编译之前要包含 stdio.h 文件。*/
/* 下一行 int main() 是主函数,程序从这里开始执行。*/
/* 下一行将会被编译器忽略,这里放置程序的注释内容。它们被称为程序的注释。*/
/* 下一行 printf(...) 是 C 中另一个可用的函数,会在屏幕上显示消息 "My name is yinzhengjie!"。*/
/* 下一行 return 0; 终止 main() 函数,并返回值 0。*/
[root@yinzhengjie c]#
[root@yinzhengjie c]# gcc hello.c #编译程序
[root@yinzhengjie c]# ll
总用量
-rwxr-xr-x+ root root 12月 : a.out #该文件是编译后新生成的哟!
-rw-r--r--+ root root 12月 : hello.c
[root@yinzhengjie c]# ./a.out     #执行C程序。
My name is yinzhengjie!
[root@yinzhengjie c]#
[root@yinzhengjie c]#

C语言扫盲篇的更多相关文章

  1. 分布式协调服务Zookeeper扫盲篇

    分布式协调服务Zookeeper扫盲篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 身为运维工程师对kubernetes(k8s)可能比较熟,那么etcd(go语言实现)分布式协 ...

  2. 高级Linux运维工程师必备技能(扫盲篇)

    高级Linux运维工程师必备技能(扫盲篇) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在了解文件系统之前,我们要学习一下磁盘存储数据的方式,大家都知道文件从内存若要持久化存储的 ...

  3. Httpd服务入门知识-http协议版本,工作机制及http服务器应用扫盲篇

    Httpd服务入门知识-http协议版本,工作机制及http服务器应用扫盲篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Internet与中国 Internet最早来源于美 ...

  4. MySQL数据库扫盲篇

    MySQL数据库扫盲篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.MySQL概述 1>.什么是MySQL MySQL是瑞典的MySQL AB公司开发的一个可用于各 ...

  5. 转摘 MySQL扫盲篇

    一下文章摘自:http://www.jellythink.com/archives/636 MySQL扫盲篇 2014-09-15 分类:MySQL / 数据库 阅读(1412) 评论(1)  为什么 ...

  6. 用Visual Studio Code Debug世界上最好的语言(Mac篇)

    用Visual Studio Code Debug世界上最好的语言(Mac篇) 首先,你要有台Macbook Pro,接着才继续看这个教程. PS:Windows用户看这里用Visual Studio ...

  7. HTTP/2协议–特性扫盲篇

    HTTP/2协议–特性扫盲篇 随着web技术的飞速发展,1999年制定的HTTP 1.1已经无法满足大家对性能的要求,Google推出协议SPDY,旨在解决HTTP 1.1中广为人知的性能问题.SPD ...

  8. C语言函数篇(二)函数参数基础设计

    形参实现一种数据传入的接口 ,由 实参 拷贝给 形参. 拷贝!!!!!!!!!!! 例1: void func(int tmp){ //意图是实现传进来的参数 +1 tmp++; } int mian ...

  9. 01--Qt扫盲篇

    Qt扫盲篇 1.What is Qt 一个跨平台应用程序和UI开发框架,主要偏向于UI框架方面,由诺基亚公司开发维护. 使用 Qt 只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操 ...

随机推荐

  1. HTML基础之DOM操作

    DOM(Document Object Model 文档对象模型) 一个web页面的展示,是由html标签组合成的一个页面,dom对象实际就是将html标签转换成了一个文档对象.可以通过dom对象中j ...

  2. libgdx学习记录9——FreeType,ttf中文显示

    前面讲到使用Hireo创建的BitmapFont以显示中文字体.这种方式效率很高,当所要显示的字的总数较少,并且大小比较固定时,可以采用这种方式. 但是这种也有弊端: (1)字体大小不能随意设置,当放 ...

  3. C语言和python的区别

    Python可以说是目前最火的语言之一了,人工智能的兴起让Python一夜之间变得家喻户晓,Python号称目前最最简单易学的语言,现在有不少高校开始将Python作为大一新生的入门语言.本萌新也刚开 ...

  4. setBit testBit权限管理

    1.jdk7文档解释 public boolean testBit(int n) Returns true if and only if the designated bit is set. (Com ...

  5. docker之镜像管理命令

    一.docker image 镜像管理命令 指令 描述ls 列出本机镜像build 构建镜像来自Dockerfilehistory 查看镜像历史inspect 显示一个或多个镜像详细信息pull 从镜 ...

  6. python中类中属性和方法的具体定义方法和使用

    1. Python中类中特性分成属性和方法 属性和方法都分为私有和公有的,私有的只可以在本类中使用外部是无法访问的 2. 定义属性(成员变量)的语法格式(公有属性/私有属性) class 类名: de ...

  7. Python_汇总生成统计报表

    import xlrd import xlwt from xlutils.copy import copy objWb = xlrd.open_workbook(r'C:\Users\IBM\Desk ...

  8. request.getParameter中文乱码问题解决办法

    new String(request.getParameter("pageNo").getBytes("ISO-8859-1"),"UTF-8&quo ...

  9. redis 事务,持久化,日志,主从,VM

    redis目前对事务的支持比较简单,只能保证一个客户端连接发起事务中的命令可以连续执行,而中间不会插入其他客户端的命令. 1.事务 一般情况下,redis接收到一个客户端发送的命令,立刻执行并返回结果 ...

  10. 从零开始学Kotlin-使用接口(7)

    从零开始学Kotlin基础篇系列文章 定义接口 使用关键字interface定义接口 interface InterfaceDemo7 { } 类或对象可以实现一个或者多个接口 class demo7 ...