本文章将围绕C展开来写一篇基础(小白)的博客。本人想从零基础开始慢慢的写,所以就先从概述开始了,慢慢的由低到高吧,就像是我们一开始都是从hello word开始入门一样。当然这篇博客大家可能会觉得水🌊,我自己都觉得好水,实在是第一次写,虽说学了也挺久的了,但以后一定会多多改善的,大佬们见谅ヾ(^▽^*))) 由于这是本人第一次写博客,写的不好还望见谅❤~ ㈠C语言是什么? 简单的来说C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。 历史舞台-C语言由美国贝尔研究所的D.M.Ritchie于1972年推出,在1978年之后C语言就已经先后被移植到了一种 大 中 小 型的微型机上了(注:微型机其实就是一个计算机系统)。可以作为工作中的 编写系统、设计语言以及应用程序等等,也可以实现程序上的一些语言的设计,编写不依赖计算机硬件的应用程序,可以说C语言的编写应用实际上范围是非常广泛的,因为它具备了非常厉害的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,就像单片机,以及嵌入式开发等一些。 ㈡C语言相比其它语言有什么样的优势。
㈢C语言的特点 以下是博主用简短的话语句来概述的。
这里ANSI C一共有《32个关键字》(掌握):
可能我到时候后面也会把这 32 个关键字着重的把它们单独写一篇文章好好说一下它们的能容以及如何去使用。 注意:在C语言中,关键字都是小写的,在C语言中关键字是不能拿来当作变量名的! ㈣打印hello word(重点理解) 博主用的编译器是vs 2019,这是一款功能特别强大且容易上手的对于初学者非常友好,可以去浏览器官网当中下载。 https://jingyan.baidu.com/article/4b52d702eed66ffc5d774b4e.html3 这个是如何编译运行软件的链接。 如下代码所示👇 #include<stdio.h> int main(void) { printf("hello word\n"); return 0; } 📝说明⇢别看上述代码少才几行,但是对于刚学习C语言的小伙伴们知识点还是很多的。接下来博主就来介绍下代码的意思。
‼注意⇢写代码的时候输入代码的字符必须是英文。 ㈤一个完整的C语言程序 #include<stdio.h> // arr本质上是一个指针 int binary_search(int arr[],int k,int sz) { //算法的实现 int left = 0;//左边数组第一个下标 //右边数组第一个下标 int right = sz - 1; /* 1 2 3 4 5 6 7 8 9 10 //根据左右下标求出中间的元素下标 0 1 2 3 4 5 6 7 8 9 */ while (left<=right)//当left等于right 就代表已经找到了k的下标 { int mid = (left+right)/2; if (arr[mid] < k) //如果mid元素(4)比我找的元素(6)要<的话 { left = mid + 1; //4+1=5这里指的是元素 } else if (arr[mid] > k)//如果mid元素(4)比我找的元素(6)要>的话 { right = mid - 1; //4-1=3 } else { return mid; //返回mid到函数当中去 } } return 1;//找不到返回给1 } int main(void) { //二分查找 //在一个有序的数组中查找具体的某一个数字 //如果找到了返回这个数组的下标,找不到返回-1. int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int k = 7; int sz = sizeof(arr) / sizeof(arr[0]);//sz元素的个数 //ret接收返回值 这里arr传递的只是数组首元素的地址 int ret = binary_search(arr,k,sz);//调用(二分查找)函数 if (ret == 1) { printf("找不到数组下标"); } else { printf("找到数组下标:%d\n", ret); } return 0; } ①先去写这个函数该怎么用。 ②再去写这个函数该怎么实现。 👋在C语言程序主要包括以下部分如下👇
㈥两种注释格式 // 单行注释 以 // 开始的单行注释,这种注释可以单独占一行。 /* 单行注释 */ /* 多行注释 多行注释 多行注释。 /* */ 这种格式的注释可以单行或多行。 不能在注释内嵌套注释,注释也不能出现在字符串或字符值中。 printf函数 功能是:打印格式化数据以进行打印,将 C 字符串按格式写入标准输出(粗壮)。如果格式包括指定器(从%开始的子序),则格式下方的其他参数将格式化并插入到生成的字符串中,以替换其各自的指定器。 参数:包含要写给粗壮的文本的 C 字符串。它可以可选定包含嵌入格式指定器,这些指定器被后续其他参数中指定的值所取代,并按要求格式化。 说白了就是:格式输出, printf("<式样化字符串>",<参数表>);注意:切记再强调一下是英文,不是中文! scanf函数 功能:从 stdin 读取格式化数据 从stdin(stdin是C语言中标准输入流,一般用于获取键盘输入到缓冲区里的东西) 读取数据,并根据参数格式将其存储到其他参数指出的位置。其他参数应指向其格式字符串中相应格式指定的已分配对象。 参数:格式 包含控制从流中提取的字符的字符的字符序列的 C 字符字符处理方式:
C语言程序的结构特点(理解) 一个C语言源程序可以有一个或者多个源文件组成。 每个源文件可以由一给或者多个函数组成。 预处理命令通常放在程序的最前面(#include)。 每一个说明,每一个语句都必须以;(分号)结尾。 源文件不论你有多少文件组成,C语言有且只有一个main函数。 标识符 关键字之间必须至少+一个空格以作为间隔,若已有明显的间隔符,可以不用。、 书写程序时应该遵循的规则(了解) 从书写清晰,便于阅读,理解,维护的角度出发,在书写程序时应遵循以下规则: 1.一个说明或一个语句占一行。 2.用{} 括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。 3.低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。 在编程时应力求遵循这些规则,以养成良好的编程风格。下面给初学者分享一份软件工程中的编程规范【部分】。 1. 基本要求 1.1 程序结构清析,简单易懂,单个函数的程序行数不得超过100行。 1.2 打算干什么,要简单,直接了当,代码精简,避免垃圾程序。 1.3 尽量使用标准库函数和公共函数。 1.4 不要随意定义全局变量,尽量使用局部变量。 1.5 使用括号以避免二义性。 2.可读性要求 2.1 可读性第一,效率第二。 2.2 保持注释与代码完全一致。 2.3 每个源程序文件,都有文件头说明,说明规格见规范。 2.4 每个函数,都有函数头说明,说明规格见规范。 2.5 主要变量(结构、联合、类或对象)定义或引用时,注释能反映其含义。 2.7 常量定义(DEFINE)有相应说明。 2.8 处理过程的每个阶段都有相关注释说明。 2.9 在典型算法前都有注释。 2.10 利用缩进来显示程序的逻辑结构,缩进量一致并以Tab键为单位,定义Tab为 6个字节。 2.11 循环、分支层次不要超过五层。 2.12 注释可以与语句在同一行,也可以在上行。 2.13 空行和空白字符也是一种特殊注释。 2.14 一目了然的语句不加注释。 2.15 注释的作用范围可以为:定义、引用、条件分支以及一段代码。 2.16 注释行数(不包括程序头和函数头说明部份)应占总行数的 1/5 到 1/3 。 3. 结构化要求 3.1 禁止出现两条等价的支路。 3.2 禁止GOTO语句。 3.3 用 IF 语句来强调只执行两组语句中的一组。禁止 ELSE GOTO 和 ELSE RETURN。 3.4 用 CASE 实现多路分支。 3.5 避免从循环引出多个出口。 3.6 函数只有一个出口。 3.7 不使用条件赋值语句。 3.8 避免不必要的分支。 3.9 不要轻易用条件分支去替换逻辑表达式。 4. 正确性与容错性要求 4.1 程序首先是正确,其次是优美 4.2 无法证明你的程序没有错误,因此在编写完一段程序后,应先回头检查。 4.3 改一个错误时可能产生新的错误,因此在修改前首先考虑对其它程序的影响。 4.4 所有变量在调用前必须被初始化。 4.5 对所有的用户输入,必须进行合法性检查。 4.6 不要比较浮点数的相等,如: 10.0 * 0.1 == 1.0 , 不可靠 4.7 程序与环境或状态发生关系时,必须主动去处理发生的意外事件,如文件能否逻辑锁定、打印机是否联机等。 4.8 单元测试也是编程的一部份,提交联调测试的程序必须通过单元测试。 5. 可重用性要求 5.1 重复使用的完成相对独立功能的算法或代码应抽象为公共控件或类。 5.2 公共控件或类应考虑OO思想,减少外界联系,考虑独立性或封装性。 5.3 公共控件或类应建立使用模板。 C语言字符集(了解) 首先,跟大家大致说说:字符是组成语言最基本的元素。C语言字符由如下组成↓ 字母 :小写字母 a~z,大写字母 A~Z,分别26个。 数字 :阿拉伯数字 0~9 共 10 个。 空格 :在这里说下它的种类形式: 电脑键盘上的一个键,一般处于键盘最下面一行,是电脑键盘上长度最大的一个键。代表空一格,它在GBA模拟器默认控制器中起加速的作用。 计算机知识里,空格是算为一个字符的,所以当你在网站里填写表格的时候,可以什么都不写,但是不要在空白项里按空格键,当你在搜索引擎搜索时,若忘了其中某个字,可用空格临时替代。空格也可作为一个个小的格子中空的格子。 GBA拓展:一款模拟GBA游戏的软件,可以在非GBA平台中通过模拟的方式运行GBA(任天堂公司发售的第二代便携式游戏机)游戏,运行游戏时还需要有相应游戏的ROM(只读存储器)。 标点和标识符:标点没什么说的,在这里重点说下标识符吧 指:用来标识某个实体的一个符号,在不同的应用环境下有不同的含义。
简介(来自度娘💕) 在程序设计语言中,标识符是用作程序的某一元素的名字的字符串或用来标识源程序中某个对象的名字的 。这个元素可以是一个语句标号,一个过程或函数、一个数据元素(例如一个标量变量或一个数组)或程序本身。最通常是,标识符这个字几乎与变量名同义地使用。在程序数据的位置在整个程序执行期间保持不变的系统中,用于标量变量的标识符联系到存储器地址,而存储器地址又指向机器的存储器内的物理单元,该单元又含有一个值的表示。标识符与一个值之间的中间关系通常对程序员是透明的,因此在实际中在一个变量的名字(即其标识符)与其值(它是分配给该标识符的存储单元的当前内容)之间出现混淆。在大多数程序设计语言中,标识符可由任何字母数字字符串形成,长度往往有限制(通常为6到8个字符),只要最左边字符是字母。有些语言还容许采用专用字符。 空白符:空白符,制表符,换行符统称为空白符。空白符它是只是在字符常量和字符串常量当中出现。然而在其它的地方出现只是会起到一个间隔符号的一个作用,编写程序的时候我们会对它们忽略不计。因此在程序中的时候,使用空白符与否对程序当中的代码是并不产生任何影响的。但是在程序中我们可以适当的加点空白符,从而提高程序的可读性,以及一个美观。 3.2:C语言词汇(重点) 在C语言中的使用词汇分为六类:标识符、关键字、运算符、分割符、常量、注释等。 标识符 变量名、函数名、标号、这些统一称作是标识符。除了库函名由系统定义之外,其余都是由用户自己定义的。C语言规定,表示符只能由:字母(A~Z、a~z)、数字(0~9)也就是十进制、下划线(_)组成的字符串,并且第一个字符必须是由字母或者下划线。注意: 在标识符中,大小写是由区别的。例如:Book和book是两个不同的标识符。 关键字: 关键字是C语言的词汇。它们对C而言比较特殊,不能用它们作为标识 符(如,变量名)。许多关键字用于指定不同的类型,如 int。还有一些关 键字(如,if)用于控制程序中语句的执行顺序。在表 2.2 中所列的C语言关键字中,粗体表示的是C90标准新增的关键字,斜体表示的C99标准新增的 关键字,粗斜体表示的是C11标准新增的关键字。 当然C语言关键字也分为以下几类: 类型说明符、就像是数据类型说明变量和函数的,int char等 语句定义符、用于表示语句的功能像 if else这种 预处理命令字、用于表示一个预处理命令像C语言头文件include 运算符 C的运算符有以下几类: 1.算数运算符:* - + / % 2.关系运算符: > < == != >= <= 3.逻辑运算符:! && || 4.位运算符:<< >> ~ | ^ & 5.赋值运算符:=及扩展赋值运算符 6.条件运算符:?: 7.逗号运算符:, 8.指针运算符:*和& 9.求字节数运算符:sizeof 10.强制类型转换运算符:(类型) 11.分量运算符:. -> 12.下标运算符:[ ] 13.其他:如函数调用运算符:() 注意:条件运算符是C语言中惟一一个三目(三元)运算符 这些都是C语言的运算符、可以说种类是相当的丰富了。运算符与变量,函数一起组成的表达式,表示各种的运算符能,运算符由一个字符或者多个字符组成。 分隔符 在C语言中采用的分隔符有逗号和空格两种。逗号主要用在类型说明和函数的参数列表当中,分隔开各个变量。空格多用于各个单词之间,作为间隔符。 int a;//数据类型整形空格变量 inta;//这里关键字当中没有出现间隔,所以编译器把inta当作是标识符了出现语法错误。 常量 常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。 常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。 常量就像是常规的变量,只不过常量的值在定义后不能进行修改。 可以使用 const 前缀声明指定类型的常量,如下所示:但是const是可以指定常量,但又跟常量有些不同在特定上。可以理解为是常量但又不完全是吧。