初识C语言——C语言常见概念

目录

目录

目录

C语言概述

1 — C语言的起源

2 — C语言的优劣


前言

关于C语言的起源及优劣,内容均来自《C primer Plus》,较为枯燥,若是没有兴趣,可以直接略过

一、C语言的起源及优劣

1 - C语言的起源

  1972年,贝尔实验室的丹尼斯·里奇和肯·汤普逊在开发UNIX操作系统时设计了C语言。然而,C语言不完全是里奇突发奇想而来,他是在B语言(汤普逊发明)的基础上进行设计。至于B语言的起源,那是另一个故事。C语言设计的初衷是将其作为程序员使用的一种编程工具,因此,其主要目标是成为有用的语言。

  虽然绝大多数语言都以实用为目标,但是通常也会考虑其他方面。例如,Pascal 的主要目标是为更好地学习编程原理提供扎实的基础;而 BASIC的主要目标是开发出类似英文的语言,让不熟悉计算机的学生轻松学习编程。这些目标固然很重要,但是随着计算机的迅猛发展,它们已经不是主流语言。然而,最初为程序员设计开发的C语言,现在已成为首选的编程语言之一。


2 - C语言的优劣

优势

  1. 设计特性:相比于汇编语言和其他高级编程语言(c#、java),用C语言编写的程序更加容易理解。
  2.  高效性:由于C语言更加接近硬件,具有汇编语言才具有的微调控制能力,可以根据具体情况微调程序,以获得最大运行速度或最有效地使用内存。
  3. 可移植性:由于C语言与UNIX关系密切,UNIX系统通常会将c编译器作为软件包的一部分,安装Linux时,通常也会安装c编译器。故无论是家用计算机、专业工作站还是大型机,都能找到针对性的c编译器。
  4. 强大而灵活:C语言功能强大且灵活。例如,功能强大且灵活的UNIX 操作系统,大部分是用C语言写的;其他语言(如,Python、Pascal、Logo、 BASIC)的许多编译器和解释器都是用C语言编写的。因此,在UNIX机上使用FORTRAN时,最终是由C程序生成最屏的可执行程序。C程序可以用于解决物理学和工程学的问题,甚至可用于制作电影的动画特效。

缺点

人无完人,金无足赤。C语言也有一些缺点。例如,C语言使用指针,而涉及指针的编程错误往往难以察觉。有句话说的好:想拥有自由就必须时刻保持警惕。

C 语言紧凑简洁,结合了大量的运算符。正因如此,我们也可以编写出让人极其费解的代码。

说明:关于C语言的起源及优劣的1、2小节内容,大部分——摘自《C primer Plus》

二、C语言概述

1 - C语言程序的结构

函数头
      书写头文件

函数体

 主函数
{
   语句
   return 0;
}

C语言程序是由一个或多个函数组成,其中必须包含main(主函数)

如你所见,一个基本的C语言程序,包含函数头函数体,其中:

1-1 函数头与头文件

函数头:一般书写头文件。

头文件:所谓头文件,顾名思义,就是放在前头的文件,在正式程序开始运行之前就要执行的内容

 为什么头文件在程序运行之前就要处理呢?

     这是因为,c语言的编译者们,编译了许多预先写好的程序,并将它们集合在c库之中,让C语言的使用者更方便地进行程序的编写。下面,我举一个例子,让大家更好地了解c库的便捷性。

  例如,我们要写一个把用户输入的内容打印出来的程序,仔细想一想,我们要让程序完成以下任务:

  1. 让程序开辟一块内存空间,令用户得以输入信息;
  2. 接收用户输入的内容,将其存入内存之中;
  3. 将用户输入的内容打印在屏幕上;

  怎么样,这些常用的功能,用代码完成起来却很是麻烦,就算你觉得这很简单,但每次使用都用十几行乃至几十行代码来实现该功能,是否有些冗余呢?

  这时候,c库的作用就显现出来了,我们只需要调用c库中现成的程序(c语言中称函数)——printf和scanf即可。如下图,简单三条语句即可成。

int main(void)
{
   int a = 0;//初始化变量

   scanf("%d",&a);//接收用户输入的内容

   printf("%d",a)//把用户输入的内容在屏幕上打印出来
   
  return 0;
}

  怎么样,现在明白c库的便捷之处了吧?那么就让我们回归正题……

c库如此便捷,那么我们该如何访问c库呢?

          很简单,使用头文件即可

  那么,关于“为什么头文件在程序运行之前就要处理”这个问题,答案也显而易见了,是因为,编译器需要通过不同的头文件,访问不同的c库,只有在程序运行之前预先处理头文件,我们才可以在代码中使用相应的函数。

不同的头文件中,包含不同的库函数,该图片截自C 标准库头文件 - cppreference.com

感兴趣的朋友可以去看看。

   那么,如何使用头文件呢?

  使用头文件,就要用到预处理指令 —— #include

  预处理,顾名思义,就是预先处理,程序在正式运行之前,会对源代码进行一些准备工作,即——预处理。至于其具体运行逻辑,暂时不必知晓(因为我也不知道),大家只用知道,需要使用什么头文件,在程序之前加上 —— #include<头文件>即可

1 - 2 函数体

在第二节开头的图片中,我们看到,函数体中有 主函数、语句、return 0、{}。这就是一个函数体的主要组成部分,接下来,我将分别讲述它们。

主函数(main)

     “main”,这个名字看起来很普通,实际上的确如此,但这也是唯一的选择。为什么这么说?

    因为,C语言程序,一定要从main()开始执行。就像它的名字一样,它是程序的主体函数,无论今后定义多少个函数,主函数main也是程序中必不可少的,缺失main()函数,相当于程序没有门户,完全封闭,那么不论代码多么华丽、巧妙,都将失去意义。

 main()函数的用法

int main(void)
{

}

    如图所示,main()函数的用法就这么简单,其前面橙色的 int,表示的其实是main()函数的返回类型,具体的本篇暂时不提,大家只需要知道 —— 要使用main()函数,就要在其前面加上 int 

     关于main后面的括号,其实也很好理解。打一个不恰当的比方:我们想要进行加法运算,必须要用到两个加数。那么对于需要进行一定任务的函数来说,同样需要多个数据,此处的 void ,实际上指的是“空”“没有”,也就是说,我们没有为它提供任何数据,所以,void 在C9标准下可以忽略不写,但在C99、C11标准下,不可忽略,所以,为了防止程序出错,最好不要丢掉 void

这时候,又有眼尖的朋友发现了,“int main(void)”后面跟着一个花括号,它又有什么作用呢?

花括号 — {}

很简单,花括号代表一个整体,跟在主函数后面,表示花括号内的语句,全部是属于主函数的。

  1. 一般而言,所有C程序都用 {} 表示函数体的开始和结束,这是规定,不能省略。
  2. 花括号“{}”还可以把函数中的多条语句合成一个单元,如:
int main()
{
  int input = 0;
  int a = 0;
 
  if(input==0)
  {
    while(a==0)
      printf("hello world!");
    
  }

  return 0;
}

如图,if之后跟着的花括号,把while和printf两条语句合并在一个单元。

语句

语句是程序的基本构建块,用于执行操作或控制程序流程

C语言一般有这几种语句:

至于现在,你只需要知道:语句是用来实现程序任务的工具,它们遵循一定的语法结构,违反语法结构,将会令程序功能缺失甚至程序崩溃。

return 0;

     "return 0;"实际上是return语句,return语句执行的是:把一个值返回到函数的入口。

     例如,此处的return 0,是指把整数0返回到main(),由于在程序中,0代表false(假),非0代表ture(真)。但,电脑程序以二进制为基础,故非0,只能是1。

  • 返回0‌:表示程序成功执行,没有错误。这是最常见的返回值,通常用于程序正常结束的情况‌。
  • 返回非0值‌:表示程序执行过程中遇到了错误或异常情况。具体的非0值可以表示不同类型的错误,但这通常由程序自己定义‌。

  ………………………………………………………………………………………………………………

结语

      本来想把数据类型、占位符、基本操作符什么的都写下来的,但是……太多了!暂时就这样吧,就当是把学过的知识再总结梳理一下了,其他的只能等到下次再写了……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跨过雄关从头越

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值