C语言从入门到精通(第5版)-----读书笔记

第一章 C语言概述

1.1 C语言的发展史

1.1.1程序语言简述

1、机器语言

        低级语言,又称二进制代码语言。一种使用0、1表示的二进制代码编写指令以执行计算机操作的语言。

特点:计算机可以直接识别,不需要进行任何翻译。

2、汇编语言

        为了减轻开发者使用二进制代码编程的痛苦,用英文字母或符号串来代替机器语言的二进制码,于是把机器语言变成了汇编语言。

        缺点:依赖于计算机硬件,程序的可读性和可移植性都不是很好。

3、高级语言

        由于汇编语言依赖于硬件体系,并且助记符号数量比较多,因此,产生了高级语言。常见高级语言:C、C++、Java等。

1.1.2 C语言的历史

        C语言是一种面向过程的语言,同时具有高级语言和汇编语言的特点,C语言可以应用于不同的操作系统:Linux、Windows稍等

        C语言在BCPL语言(B语言)的基础上发展和完善的,运行在AT&T的多用户、多任务的UNIX操作系统上。

        B语言的创造者:丹尼斯·里奇和肯·汤普逊,11970年研制。

        C语言创造者:丹尼斯·里奇,20世纪70年代初期。

1.2 C语言的特点

1、高效性

代码运行效率高,且具有良好的可读性和编写性。

2、灵活性

3、功能丰富性

4、表达力强

        结构规范。

5、移植性好

        在不同的操作系统下,只需要简单地修改甚至不用修改,即可进行跨平台的程序开发操作。

1.3 一个简单的C程序

分析:

1、第一行

        一个编译预处理命令,声明了在程序编译之前要预先处理的内容。

        作用:声明本段代码已包含标准输入/输出库函数stdio,后续可直接调用,不需要用户再进行定义。

        其中,include称为文件包含命令,尖括号中的内容称为头文件或首文件。

2、第三行

        作用:声明main函数有一个int整型返回值

        函数中,这一部分称为函数头部份。

3、第4~7行

        大括号以及其中的语句块构成了函数体。

        其中,printf格式化输出函数,字符串的输出操作,包含在标准输入/输出库文件stdio中。前面做了包含声明,这里可以直接调用。

        第六行,使main函数终止运行,并向操作系统返回一个整型常量0。0就是要返回的整型值。可以将return语句理解成main函数的结束标志。

一个函数通常分为函数头和函数体两部分。

\n,转义字符,作用是换行。

4、注释

           // 单行注释

          /* 多行注释 */

1.4 一个完整的C程序

情景:计算长方形的体积

        某长方体,某高已经给出,为10。要求从控制台输入长方体的长和宽,通过输入的长、宽以及给定的高度,计算出长方体的体积。

#include<stdio.h>
#define Height 10
int calculate(int Long, int Width);
int main()
{int m_Long;int m_Width;int result;printf("长方形的高度为:%d\n",Height);printf("请输入长度\n");scanf("%d",&m_Long);printf("请输入宽度\n");scanf("%d",&m_Width);result= calculate(m_Long,m_Width);printf("长方体的体积是:");printf("%d\n",result);return 0;
}
int calculate(int Long,int Width)
{int result=Long*Width*Height;return result;
}

分析

1、#define Height 10   

        使用#define定义一个符号常量。设定用符号Height代表数值10。在成功徐编译时,只要遇见Height标识符,就会被替换为数值10。满足高已给条件。

2、int calculate(int Long,int Width);

        作用是对Calculate函数进行声明。在此处声明calculate函数,表示后面将给出calculate函数的具体定义内容。

3、int m_Long;

        定义变量。变量的作用就是存储数值,使得计算机可利用变量进行计算。

4、scanf("%d",&m_Long);

        scanf函数用来接收键盘输入的内容,并将输入的内容保存在相应变量中。在scanf函数的参数中,m_Long是之前定义的整型变量,作用是存储输入的信息内容;&符号是取地址运算符。

5、calculate函数

int calculate(int Long,int Width)
{int result=Long*Width*Height;return result;
}

        calcul函数是用户根据需要自行定义的函数,必须给出具体的函数体。

流程

1.5 C语言程序的格式

        C程序都是从main函数开始执行的,即main函数无论放在什么位置都没有关系。

        若将所有程序代码全部放入main函数中,整个程序的可读性和扩展性将会变得很差。

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/769269.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

selection instruction

在LLVM的代码生成框架中,确实存在三种类型的指令表达,它们会在同一个SelectionDAG(选择有向无环图)中共存。这些类型分别是: 一般LLVM ISD节点: 这些是LLVM提供的通用、平台无关的节点,用于表示各种常见的算术、逻辑、内存和控制流操作。例如,ISD::ADD表示一个加法操作…

RDMA内核态通信测试krping学习

krping模块是一个内核可加载模块&#xff0c;它实现了客户机/服务器ping/pong程序&#xff0c;这个模块仅仅为了测试内核rdma的API&#xff08;单边的READ和Write&#xff1b;双边的SEND和RECEIVE&#xff09;。该模块允许通过一个名为/proc/krping的/proc条目建立连接并运行pi…

ElasticSearch8 - 基本操作

前言 本文记录 ES 的一些基本操作&#xff0c;就是对官方文档的一些整理&#xff0c;按自己的习惯重新排版&#xff0c;凑合着看。官方的更详细&#xff0c;建议看官方的。 下文以 books 为索引名举例。 新增 添加单个文档 (没有索引会自动创建) POST books/_doc {"n…

服务器总是宕机问题记录

博主介绍&#xff1a; 22届计科专业毕业&#xff0c;来自湖南&#xff0c;主要是在CSDN记录一些自己在Java开发过程中遇到的一些问题&#xff0c;欢迎大家一起讨论学习&#xff0c;也欢迎大家的批评指正。 文章目录 背景调整总结 背景 2核2G的服务器&#xff0c;服务器安装了t…

Redis Cluster集群模式容器化部署

Redis Cluster集群模式容器化部署 安装Docker和docker-compose准备docker-compose文件准备Redis配置文件Linux内核参数优化启停Redis实例Redis集群搭建 环境准备&#xff1a; IP版本角色端口172.x.x.11RHEL 7.9master6379172.x.x.12RHEL 7.9master6379172.x.x.13RHEL 7.9maste…

清华镜像介绍

清华镜像&#xff0c;全称为清华大学开源软件镜像站&#xff0c;是由清华大学计算机系维护的一套开源软件镜像站点。该站点不仅为编程人员提供了一个丰富的资源平台&#xff0c;也为科研人员和需要进行软件开发或运维工作的人员提供了极大的便利。 首先&#xff0c;清华镜像的…

计算机网络:物理层中的数字传输系统全景概览解析

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

Rust 双向链表 LinkedList 和安全删除元素的方法

一、LinkedList 基本用法 在Rust中&#xff0c;LinkedList 是标准库中 std::collections 模块提供的一个双向链表实现。这个双向链表在每个节点中都保存了其前一个和后一个节点的引用&#xff0c;允许在链表的任一端进行有效的添加和移除操作。 以下是一个简单的示例&#xf…

Django之Celery篇(三)

一、任务交给Celery Django任务交给Celery的方法和普通使用Celery任务的调用基本无区别,只是将执行代码的放到到View视图中 而获取结果,往往并不能把结果和第1次请求一起响应,若想获取结果是通过第2次请求获取结果 代码如下: from django.http import HttpResponsefrom …

华为ensp中vrrp虚拟路由器冗余协议 原理及配置命令

CSDN 成就一亿技术人&#xff01; 作者主页&#xff1a;点击&#xff01; ENSP专栏&#xff1a;点击&#xff01; CSDN 成就一亿技术人&#xff01; ————前言————— VRRP&#xff08;Virtual Router Redundancy Protocol&#xff0c;虚拟路由器冗余协议&#xff0…

[数据集][目标检测]高质量铁路轨道缺陷检测数据集VOC+YOLO格式1050张6类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1050 标注数量(xml文件个数)&#xff1a;1050 标注数量(txt文件个数)&#xff1a;1050 标注…

【机器学习】基于变色龙算法优化的BP神经网络分类预测(SSA-BP)

目录 1.原理与思路2.设计与实现3.结果预测4.代码获取 1.原理与思路 【智能算法应用】智能算法优化BP神经网络思路【智能算法】变色龙优化算法&#xff08;CSA)原理及实现 2.设计与实现 数据集&#xff1a; 数据集样本总数2000 多输入多输出&#xff1a;样本特征24&#xff…

探秘ChatGPT:打造出色学术论文

ChatGPT无限次数:点击直达 探秘ChatGPT&#xff1a;打造出色学术论文 在当今信息爆炸的时代&#xff0c;如何借助ChatGPT这一先进技术创建卓越的学术论文成为了许多研究者关注的焦点。ChatGPT作为一种基于大规模预训练的生成式模型&#xff0c;具有强大的语言理解和生成能力&a…

集成学习 | 集成学习思想:Boosting思想 | XGBoost算法、LightGBM算法

目录 一. XGBoost 算法1. XGBoost 算法流程2. XGBoost 算法评价 二. LightGBM 算法2. LightGBM 算法优势 上一篇文章中&#xff0c;我们了解了Boosting思想的两种算法&#xff1a;Adboost和GBDT&#xff1b;其中对于GBDT算法&#xff0c;存在两种改进&#xff0c;即&#xff1a…

javaWeb奶茶商城前后台系统

一、简介 在当前数字化时代&#xff0c;电子商务已成为人们生活中不可或缺的一部分。为了满足用户对奶茶的需求&#xff0c;我设计并实现了一个基于JavaWeb的奶茶商城前后台系统。该系统涵盖了用户前台和管理员后台两大模块&#xff0c;包括登录注册、商品展示、购物车管理、订…

我的算法刷题笔记(3.18-3.22)

我的算法刷题笔记&#xff08;3.18-3.22&#xff09; 1. 螺旋矩阵1. total是总共走的步数2. int[][] directions {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};方位3. visited[row][column] true;用于判断是否走完一圈 2. 生命游戏1. 使用额外的状态22. 再复制一份数组 3. 旋转图像观…

PHP之CURL和Socket

文章目录 一、CURL1.基本流程&#xff08;1&#xff09;初始化&#xff08;2&#xff09;向服务器发送请求&#xff08;3&#xff09;向服务器发送请求&#xff08;4&#xff09;关闭curl 2.CURLOPT参数记得写一个文件curl上传的例子记得写一个json上传的例子3.CURL批处理 二、…

【ARXIV2402】MambaIR

这个工作首次将 Mamba 引入到图像修复任务&#xff0c;关于为什么 Mamba 可以用于图像修复&#xff0c;作者有非常详细的解释&#xff1a;一路向北&#xff1a;性能超越SwinIR&#xff01;MambaIR: 基于Mamba的图像复原基准模型 作者认为Mamba可以理解为RNN和CNN的结合&#xf…

Transformer模型

Transformer模型简介 Transformer模型自从2017年被提出以来&#xff0c;就以其优异的性能在自然语言处理(NLP)领域取得了巨大成功。它的设计哲学是完全基于自注意力机制&#xff08;Self-Attention Mechanism&#xff09;&#xff0c;这使得模型能够在处理序列数据时&#xff…

【测试开发学习历程】计算机编程语言

前言&#xff1a; 学习完数据库&#xff0c;我们便要进入到编程语言的内容当中了。 这里先对编程语言写出大致的分类&#xff0c; 在这之后&#xff0c;我们会以Python为重点&#xff0c; 开始测试开发为重点的编程语言学习。 目录 1 计算机编程语言的发展 2 语言的分类…