当前位置: 首页 > 科技观察

C中的简单编程

时间:2023-03-14 19:55:08 科技观察

我们将C的所有要点放入一个易于阅读的备忘录中。1972年,DennisRitchie在贝尔实验室工作,几年后他和他的团队成员发明了Unix。在创建了一个经久不衰的操作系统(至今仍在使用)之后,他需要一种好的方法来对这些Unix计算机进行编程,以便它们能够执行新任务。现在看来很奇怪,但当时编程语言比较少,Fortran、Lisp、Algol、B语言都很流行,但对于贝尔实验室的研究人员想做的事情,还远远不够。DennisRitchie展示了后来被称为程序员的基本特征:创建自己的解决方案。他称之为C语言,近50年后,它仍然被广泛使用。为什么你应该学习C如今,有许多语言为程序员提供了比C更多的功能。最明显的是C++语言,这是一种建立在C之上以创建一种很好的面向对象语言的名字相当直白的语言。尽管如此,许多其他语言的存在是有充分理由的。计算机擅长一致的重复,所以任何可预测的东西都可以内置到编程语言中,这意味着程序员的工作量会减少。一个int转long(longx=long(n);)用C++语言一行就可以了,为什么要用C语言两行呢?但是,C语言在今天仍然有用。首先,C是一种相当简洁明了的语言。除了编程基础知识之外,没有非常高级的概念,主要是因为C实际上是现代编程语言的基础之一。例如,C语言的特性之一是数组,但它不提供字典(除非你自己写一个)。当你学习C时,你就学习了编程的基本构建块,这可以帮助你实现当今编程语言的改进及其精心设计。因为C是一种精简的编程语言,所以您的应用程序可能会体验到许多其他编程语言所没有的性能提升。当您考虑代码的执行速度时,很容易陷入吝啬,因此重要的是要问您是否需要更快的速度来完成特定任务。使用C,与使用Python或Java相比,您需要处理每一行代码。C语言程序运行速度非常快。这是Linux内核用C编写的一个很好的理由。最后,C很容易上手,特别是如果您运行的是Linux,它已经包含GNUC库(glibc)。要编写和构建C程序,您需要做的就是安装编译器、打开文本编辑器并开始编码。开始学习C如果您运行的是Linux,则可以使用包管理器安装C编译器。在Fedora或RHEL上:$sudodnfinstallgcc在Debian及其衍生产品上:$sudoaptinstallbuild-essential在macOS上,您可以安装Homebrew并使用它来安装GCC:$brewinstallgcc在Windows上,您可以使用MinGW安装一组最小的GNU实用程序,包括GCC。在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”程序:#includeintmain(){printf("Helloworld");return0;}第一行包含一个名为stdio.h的文件。h(标准输入和输出),它基本上是免费的,非常基本的C代码,您可以在自己的程序中重复使用。然后创建一个名为main的函数,它由一个基本的输出语句组成。将这段文本保存到一个名为hello.c的文件中,然后用GCC编译它:$gcchello.c--outputhello尝试运行你的C程序:$./helloHelloworld$返回值这是Unix哲学作为函数的一部分,一个函数在执行后“返回”一些东西:成功时没有返回,失败时返回其他东西(例如,错误消息)。这些返回值通常用数字(准确地说是整数)表示:0表示没有错误,任何大于0的数字表示某种不成功的状态。Unix和Linux被设计成在成功运行时保持静默。这是为了允许您在假设没有错误或警告会妨碍您的情况下执行一系列命令,以便您始终可以为成功执行做好准备。同样,C中的函数被设计为无错误。你可以通过做一个小的修改让你的程序看起来失败来看到这一点:includeintmain(){return1;}编译它:$gcchello.c--outputfailer现在使用内置的Linux测试方法来运行它。&&运算符仅在成功时执行命令的第二部分。示例:$echo"success"&&echo"itworked"successitworked失败时,||test执行命令的第二部分。$ls等等||echo"itdidnotwork"ls:cannotaccess'blah':Nosuchfileordirectoryitdidn'twork现在,试试你的程序,它不会在成功时返回0;它返回1而不是:$./failer&&echo"itworked"Stringis:hello这个程序执行成功,但是没有触发第二个命令。变量和类型在某些语言中,您可以在不指定变量包含的数据类型的情况下创建变量。这些语言的设计方式是,解释器需要对一个变量运行一些测试,以试图找出该变量是什么数据类型。例如,var=1定义了一个整数,当您创建一个将var添加到某物的表达式时,Python知道它显然是一个整数。它还知道当您连接hello和world时,world一词是一个字符串。C语言不会为您做任何这些识别和调查;您必须自己定义变量类型。变量类型有几种,包括整型(int)、字符(char)、浮点型(float)、布尔型(boolean)。您可能还会注意到这里没有字符串类型。与Python和Java以及Lua等编程语言不同,C语言没有字符串类型,而是将字符串视为字符数组。下面是一些创建char数组变量的简单代码,然后使用printf将数组变量和一条简单消息打印到屏幕上:#includeintmain(){charvar[6]="hello";printf("Yourstringis:%s\r\n",var);}您可能会注意到此代码示例为五个字母的单词提供了六个字符的空间。这是因为在字符串的末尾隐藏了一个结束符,在数组中占了一个字节。您可以通过编译和执行代码来运行它:$gcchello.c--outputhello$./hellohellofunctions与其他编程语言一样,C函数接受可选参数。您可以通过定义希望函数接受的数据类型将参数从一个函数传递到另一个函数:#includeintprintmsg(chara[]){printf("Stringis:%s\r\n",a);}intmain(){chara[6]="你好";打印信息(一);return0;}简单地将一个函数拆分成两个不是很有用,但它演示了默认运行main函数以及如何在函数之间传递数据。条件语句在实际编程中,您通常希望您的代码根据数据做出决定。这是使用条件语句完成的,其中最基本的是if语句。为使该示例程序更具动态性,您可以包含string.h头文件,顾名思义,该文件包含用于检查字符串的代码。尝试使用string.h文件中的strlen函数来测试传递给printmsg函数的字符串是否大于0:#include#includeintprintmsg(chara[]){size_tlen=strlen(a);if(len>0){printf("字符串是:%s\r\n",a);}}intmain(){chara[6]="你好";打印信息(一);return1;}正如在这个例子中实现的那样,条件永远不会为假,因为提供的字符串总是hello,它的长度总是大于0。这个半心半意的echo命令的重新实现所做的最后一件事是接受来自用户。命令参数stdio.h文件包含每次程序启动时提供两个参数的代码:命令中包含的项目数(argc)和包含每个项目的数组(argv)。例如,假设您发出这个虚构的命令:$foo-ibarargc是3并且argv的内容是:argv[0]=fooargv[1]=-iargv[2]=bar您可以修改示例C接受argv[2]作为字符串而不是默认的hello的程序?命令式编程语言C语言是一种命令式编程语言。它不是面向对象的,也没有类结构。使用C语言的经验可以教会您很多有关如何处理数据以及如何更好地管理代码在运行时生成的数据的知识。大量使用C,你最终可能会编写出可供其他语言(如Python和Lua)使用的库。要了解有关C的更多信息,您需要使用它。在/usr/include/中查找有用的C头文件,看看您可以执行哪些小任务来让C为您工作。在您学习的过程中,使用由FreeDOS的JimHall编写的C备忘单。它在双面纸质备忘录上列出了所有要点,因此您可以在练习时立即访问C语言语法的所有要点。