c语言编程代码大全c语言编程方法和技巧C语言代码编程




c语言编程代码大全c语言编程方法和技巧C语言代码编程

2022-07-21 2:19:33 网络知识 官方管理员

c语言编程代码大全(c语言编程方法和技巧)(1)

我们将所有的C语言要素放置到一份易读的备忘录上。

1972年,丹尼斯·里奇(DennisRitchie)任职于贝尔实验室(BellLabs),在几年前,他和他的团队成员发明了Unix。在创建了一个经久不衰的操作系统(至今仍在使用)之后,他需要一种好的方法来对这些Unix计算机编程,以便它们可用执行新的任务。在现在看来,这很奇怪,但在当时,编程语言相对较少,Fortran、Lisp、Algol以及B语言都很流行,但是,对于贝尔实验室的研究员们想要做的事情来说,它们还是远远不够的。丹尼斯·里奇表现出一种后来被称为程序员的主要特征的特质:创造了他自己的解决方案。他称之为C语言,并且在近50年后,它仍在广泛的使用。

为什么你应该学习C语言

今天,有很多语言为程序员提供了比C语言更多的特性。最明显的是C++语言,这是一种以相当露骨的方式命名的语言,它构建在C语言之上,创建了一种很好的面向对象语言。不过,许多其它语言的存在是有充分理由的。计算机擅长一致的重复,因此任何可预见的东西都可以构建在编程语言中,对程序员来说这意味着更少的工作量。为什么在C++语言中用一行语句就可以将一个int转换为一个long时(longx=long(n);),还要在C语言用两行语句呢?

然而,C语言在今天仍然有用。

首先,C语言是一种相当简约和直接的语言。除了编程的基础知识之外,并没有很高级的概念,这很大程度上是因为C语言实际上就是现代编程语言的基础之一。例如,C语言的特性之一是数组,但是它不提供字典(除非你自己写一个)。当你学习C语言时,你会学习编程的基础组成部分,它可以帮助你认识到如今的编程语言的改进及其的精心设计。

因为C语言是一种最小化的编程语言,你的应用程序很可能会获得性能上的提升,这在其它许多编程语言中是看不到的。当你考虑你的代码可以执行多快的时候,很容易陷入锱铢必较的境地,因此,重要的是要问清楚你是否需要为某一特定任务提供更多的速度。与Python或Java相比,使用C语言,你在每行代码中需要纠结的地方更少。C语言程序运行很快。这是Linux内核使用C语言编写的一个很好的理由。

最后,C语言很容易入门,特别是,如果你正在运行Linux,就已经能运行C语言代码了,因为Linux系统包含GNUC库(glibc)。为了编写和构建C语言程序,你需要做的全部工作就是安装一个编译器,打开一个文本编辑器,开始编码。

开始学习C语言

如果你正在运行Linux,你可以使用你的软件包管理器安装一个C编译器。在Fedora或RHEL上:

$sudodnfinstallgcc

在Debian及其衍生系统上:

$sudoaptinstallbuild-essential

在macOS上,你可以安装Homebrew,并使用它来安装GCC:

$brewinstallgcc

在Windows上,你可以使用MinGW安装一套最小的包含GCC的GNU实用程序集。

在Linux或macOS上验证你已经安装的GCC:

$gcc--versiongcc(GCC)x.y.zCopyright(C)20XXFreeSoftwareFoundation,Inc.

在Windows上,提供EXE文件的完整路径:

PS>C:\MinGW\bin\gcc.exe--versiongcc.exe(MinGW.orgGCCBuild-2)x.y.zCopyright(C)20XXFreeSoftwareFoundation,Inc.

C语法

C语言不是一种脚本语言。它是一种编译型语言,这意味着它由C编译器处理来产生一个二进制可执行文件。这不同于脚本语言(如Bash)或混合型语言(如Python)。

在C语言中,你可以创建函数来执行你希望做到的任务。默认情况下,执行的是一个名为main的函数。

这里是一个使用C语言写的简单的“helloworld”程序:

#include<stdio.h>intmain(){printf("Helloworld");return0;}

第一行包含一个被称为stdio.h(标准输入和输出)的头文件,它基本上是自由使用的、非常初级的C语言代码,你可以在你自己的程序中重复使用它。然后创建了一个由一条基本的输出语句构成的名为main的函数。保存这些文本到一个被称为hello.c的文件中,然后使用GCC编译它:

$gcchello.c--outputhello

尝试运行你的C语言程序:

$./helloHelloworld$

返回值

这是Unix哲学的一部分,一个函数在执行后“返回”一些东西:在成功时不返回任何东西,在失败时返回其它的一些东西(例如,一个错误信息)。这些返回的内容通常使用数字(确切地说是整数)表示:0表示没有错误,任何大于0的数字都表示一些不成功的状态。

Unix和Linux被设计成在运行成功时保持沉默是很明智的。这是为了让你在执行一系列命令时,假设没有任何错误或警告会妨碍你的工作,从而可以始终为成功执行做准备。类似地,在C语言中的函数在设计上也预期不出现错误。

你可以通过一个小的修改,让你的程序看起来是失败的,就可以看到这一点:

include<stdio.h>intmain(){printf("Helloworld");return1;}

编译它:

$gcchello.c--outputfailer

现在使用一个内置的Linux测试方式来运行它。仅在成功时,&&操作符才会执行一个命令的第二部分。例如:

$sudoaptinstallbuild-essential0

在失败时,||测试会执行一个命令的第二部分。

$sudoaptinstallbuild-essential1

现在,尝试你的程序,在成功时,它不返回0;而是返回1:

$sudoaptinstallbuild-essential2

这个程序成功地执行了,但是没有触发第二个命令。

变量和类型

在一些语言中,你可以创建变量而不具体指定变量所包含的数据的类型。这些语言如此设计使得解释器需要对一个变量运行一些测试来视图发现变量是什么样的数据类型。例如,var=1定义了一个整型数,当你创建一个表达式将var与某些东西相加时,Python知道显然它是一个整型数。它同样知道当你连接hello和world时,单词world是一个字符串。

C语言不会为你做任何这些识别和调查;你必须自己定义你的变量类型。这里有几种变量类型,包括整型(int),字符型(char),浮点型(float),布尔型(boolean)。

你可能也注意到这里没有字符串类型。与Python和Java和Lua以及其它的编程语言不同,C语言没有字符串类型,而是将字符串看作一个字符数组。

这里是一些简单的代码,它建立了一个char数组变量,然后使用printf将数组变量和一段简单的信息打印到你的屏幕上:

$sudoaptinstallbuild-essential3

你可能会注意到,这个代码示例向一个由五个字母组成的单词提供了六个字符的空间。这是因为在字符串的结尾有处一个隐藏的终止符,它占用了数组中的一个字节。你可以通过编译和执行代码来运行它:

$gcchello.c--outputhello$./hellohello

函数

和其它的编程语言一样,C函数也接受可选的参数。你可以通过定义你希望函数接受的数据类型,来将参数从一个函数传递到另一个函数:

$sudoaptinstallbuild-essential5

简单地将一个函数分解为两个函数的这种方法并不是非常有用,但是它演示了默认运行main函数以及如何在函数之间传递数据。

条件语句

在真实的编程中,你通常希望你的代码根据数据做出判断。这是使用条件语句完成的,if语句是其中最基础的一个语句。

为了使这个示例程序更具动态性,你可以包含string.h头文件,顾名思义,它包含用于检查字符串的代码。尝试使用来自string.h文件中的strlen函数测试传递给printmsg函数的字符串是否大于0:

$sudoaptinstallbuild-essential6

正如在这个示例中所实现的,该条件永远都不会是非真的,因为所提供的字符串总是hello,它的长度总是大于0。这个不够认真的重新实现的echo命令的最后一点要做是接受来自用户的输入。

命令参数

stdio.h文件包含的代码在每次程序启动时提供了两个参数:一个是命令中包含多少项的计数(argc),一个是包含每个项的数组(argv)。例如,假设你发出这个虚构的命令:

$sudoaptinstallbuild-essential7

argc是3,argv的内容是:

  • argv[0]=foo
  • argv[1]=-i
  • argv[2]=bar

你可以修改示例C语言程序来以字符串方式接受argv[2],而不是默认的hello吗?

命令式编程语言

C语言是一种命令式编程语言。它不是面向对象的,也没有类结构。使用C语言的经验可以教你很多关于如何处理数据,以及如何更好地管理你的代码运行时生成的数据。多使用C语言,你最后能够编写出其它语言(例如Python和Lua)可以使用的库。

想要了解更多关于C的知识,你需要使用它。在/usr/include/中查找有用的C语言头文件,并且看看你可以做什么小任务来使C语言对你有用。在学习的过程中,使用来自FreeDOS的JimHall编写的C语言忘备录。它在一张双面纸忘备录上放置了所有的基本要素,所以在你练习时,可以立即访问C语言语法的所有要素。

发表评论:

最近发表
网站分类
标签列表