非科班入门C语言要懂什么概念?【Day1】

本文推荐阅读时间20min-30min

推荐阅读方式:按照博主的思路建立起知识体系,在遇到个不理解的名词时“先接受”,不要死抠一两个提及的非重点概念。

企鹅叨叨:C语言是博主第一门接触的编程语言。为了督促自主学习,我决定每天抽出时间把学到的知识写成具有可读性的、系统性的文章。也与各位码友们共勉,欢迎在评论区进行讨论与指正。


接下来进入正文!

  • 本文首先介绍CS的四个基础概念:计算机语言、代码的运行、操作系统、编译器,为零基础的家人补充前置知识。
  • 接着会教会你如何使用编译器,写出你人生中第一个c语言代码(包含main函数、头文件和库函数、变量、字符、内存、转义字符

Ⅰ.基础概念讲解


 1.1 计算机语言 ⚝

计算机是一个用于高速计算的电子计算机器。

历经近100年的技术飞跃,计算机所承担的功能也在源源不断地扩大。计算机复杂的功能,离不开我们熟悉的代码。

实际上,计算机的运行就是依靠程序员向CPU下达一条条的指令。而指令(可执行程序)的前身,就是我们用键盘敲出来的代码!

广义的“代码”,可以理解为由计算机语言构成的语段。

计算机语言可以分为机器语言、汇编语言和高级语言三种。今天提到的C语言就属于高级语言

1.2 代码的运行过程 ⚝⚝⚝

由多个源文件组成的C程序,经编辑、预处理、编译、链接等阶段会生成最终的可执行程序

步骤可以分为四步:程序员使用C语言写代码;代码经过编译链接,成为由机器语言写成的、0和1构成的可执行程序;可执行程序传递给计算机的CPU,下达指令;计算机执行指令。

61a078a8e603402abe72db41e0d28dc2.png
图二:C语言程序的运行

 1.3 操作系统 

操作系统是安装在计算机中的一种软件,它是计算机硬件和应用程序之间的桥梁——这是计算机的工作原理。

操作系统和计算机之间的关系可以被描述为一个层次结构。在这个层次结构中,操作系统处于最底层,直接与计算机的硬件交互。它为上层的应用程序提供了一个抽象的接口,使得应用程序可以通过操作系统访问硬件资源。此处做简单了解。

操作系统也分为很多种类 ——windows系统,MacOS系统,还有Linux和Unix系统。

例如,博主的电脑就是windows11系统。像其他软件一样,系统也有不同版本,也会定期更新。

而前文提到的C语言,就用来重写了标准化的Unix系统。同时非科班的同学比较熟悉的python,也是用c语言写成的 

 1.4 编译器(了解即可)

理论上,学写代码可以用任何文本编写器进行编写。但代码不是纯粹的文本,写完之后是要交给计算机去执行的,所以专门用来写代码的编译器除了具有编写功能、有的还有分析功能(判断当前代码有无错误),编译功能(将代码进行)、调试功能(一步步执行代码、监视变量或地址的数值)。

C语言编译器选择很多,常用的有轻量级的devc++和VisualStudio系列,这两个都不需要自己配环境,属于下载完直接用的集成开发环境。如果电脑配置还行,博主本人比较推荐使用VS,相对于devc++更非科班友好。

VS下载网址:免费的开发人员软件和服务 - Visual Studio (microsoft.com)

Ⅱ.第一个C语言程序 ⚝⚝⚝ 

  题目 : 请实现在屏幕上打印 Hello World    

本题可以借助C语言库中的库函数printf来实现:

库函数⚝⚝⚝ 是为了方便程序员快捷地实现某种功能,由c语言官方设计好的“代码快捷键”。一个库函数通常由其实现的功能、需要输入的参数和函数的返回类型构成。)

以经典库函数printf为例:

 int printf(const char * format

——该函数的功能——将参数数据打印到屏幕(stdout)上

——在函数名前面的是返回类型,意味着函数执行完毕后会返回一个什么数据类型的值,根据这个值,可以对函数的执行情况进行判断,我们可以声明一个该类型的变量,对该返回值进行接收。

int ret = printf(...

变量⚝⚝⚝:是计算机程序中用于存储和表示数据的一种概念。它是一个具有名称的内存位置,用于存储和操作不同类型的数据,如数字、字符、布尔值等。声明一个变量,可以理解为在内存中申请一块空间用于储存该值,输入变量名就可以调用该数据。

——在函数名后面的是参数类型,意味着函数执行需要输入一个什么样的值,根据这个值,可以实现函数的功能。

printf(const char * format

//这里的参数,是一个 const char * format类型

(format意为“格式”,这里可以指格式化的信息,可以是C字符串或是占位符。占位符的位置运行时动态地替换成实际的值。)

占位符和其对应的数据类型
(运用样本详情见: printf - C++ Reference (cplusplus.com)

 

在了解了这个函数的运行机制和作用后,我们就会发现,如果在参数中输入题目给的hello world,按照该函数的功能,hello world就会输出到屏幕上进行打印;"hello world"本身就是字符串,不需要运用占位符;由于打印的执行情况可以直接通过屏幕观察到,所以我们不设置变量对返回值进行接收。

所以我们得到了以下的代码(附运行结果):

#include<stdio.h> // 头文件引入

int /*主函数返回类型*/ main()
{
     printf("hello world"); //头文件中包含的库函数
     return 0; //主函数返回值

} //主函数

6175deea1a164f4ab7ecd78e5c73ce18.png

等等!代码里怎么还有好多其他东西?

萌新:不是说 printf就能实现打印么?!其他的又是什么?

2.2 C程序的基本框架

c程序不止由可以实现功能的代码构成,还有为了运行代码而存在的框架。

接下来我们逐一对它们的作用进行解释。

2.2.1 #include

作用:引入头文件。库函数的声明保存在头文件中,如果要使用库函数,必须先声明包含其声明的头文件。

2.2.2  <stdio.h>

"std"意为标准的;"io"是指input和output;stdio意为标准输入输出;文件后缀是.h,意味着该文件是头文件类型。

在c/c++程序中,库函数的实现和逻辑实现代码储存在定义文件(definiton file)中,而库函数的声明存在头文件中(header file)。

头文件主要作用在于调节库功能:在程序运行中,用户程序只需按照头文件中的接口声明来调用库功能,编译器就会从库中提取相应的代码。

简单理解就是,是一本提前写好的代码书。

定义文件就是书的主体内容头文件就是书的目录

当我们想用书里已经写好的的代码(库函数、宏、数据类型)时,

只需要调用整个头文件,编译器就能像根据目录去翻书一样,提取到我们需要的代码了。

函数库在用户程序中的使用

所有c/c++的库,都可以通过调用头文件使用:

2.2.3  int main(){ }

int意为该函数返回值为一个int类型,main是函数名,意为“主函数”。

一个c程序想要运行,就是从这个函数开始的。main函数是c程序的入口,它的函数主体“{}”内的部分,就是c程序要执行的具体操作,也是c程序的主体。

return 意为主函数返回值,在函数无异常的情况下,一般使用“return 0”语句作为主函数的结尾,return后的语句不再执行。

Day1总结:

掌握了以上的基础概念,相信你已经对c程序的运行以及c程序的写法有了一定的认知。

无论是什么水平的程序员,都是从helloworld这个代码开始,开启程序员人生的——快打开编译器,敲出你人生中的第一个c代码吧!

  • 63
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值