一:C语言常见概念

一:C语言常见概念

1.认识C语言:

​ C语言是人和计算机交流的语言

​ C语言是一门面向过程的语言,而C++,Java,Python等是一门面向对象的语言

​ 软件开发(项目):面向过程+面向对象

​ 操作系统(Windows,Linux等) 系统编程

​ 计算机网络 网络编程,网络协议

​ 数据库(MySQL

​ 数据结构与算法

2.C语言的历史:

​ C语言最初是作为Unix系统的开发工具而发明的

		Unix系统是开源的操作系统   -->   Linux操作系统

​ 1969年发明了B语言 – 1972年C语言现世 – 1973年Unix系统使用C语言重写(在此之前Unix系统是用汇编语言写的) – 1988年美国国家标准协会(ANSI)正式将C语言标准化

3.编译器:

​ 一:编译和链接:

​ 1. C语言是一门编译型计算机语言,其源代码都是文本文件,本身无法执行,必须通过编译器的翻译和链接器的链接,生成二进制的可执行文件(计算机能够识别的是二进制的指令),才可执行。

​ 2. C语言需要依赖编译器将计算机语言转换成机器能够执行的机器指令

​ 3. C语言代码是放在 .c 文件中的,想要得到最终运行的可执行程序,中间要经过编译和链接的2个过程

​ 4. C语言把 .c 为后缀的文件称为源文件,把 .h 为后缀的文件称为头文件

​ 二:集成开发环境(IDE):用于提供程序开发环境的应用程序,一般包括代码编辑器,编译器,调试器和图形用户界面等工具。集成了代码编写功能,分析功能,编译功能,调试功能等一体化的开发软件服务套

一个工程一般都会有多个源文件组成: 如下图:

在这里插入图片描述

注意: 1. 每个源文件 .c 单独经过编译器处理生成对应的目标文件(.obj为后缀的文件)

​ 2. 多个目标文件和库文件经过链接器处理生成对应的可执行程序(.exe文件)

4.第一个C语言程序:
#include <stdio.h>
int main()
{printf("Hello C语言!!!");return 0;
}

​ 代码运行的快捷键:CTRL + F5

​ 代码调试:F10

​ 字体大小调节:CTRL + 鼠标滚轮

​ 代码注释:CTRL + K + C

​ 取消代码注释:CTRL + K + U

注意: 1. 一条语句结束后要有分号

​ 2. 代码中不能使用中文符号

​ 3. 项目名称最好要见名知意,不要使用中文,不要使用特殊字符,不要使用空格

5.main()函数:

​ 每个C语言程序不管有多少行代码,都是从main()函数开始执行的,main()函数是程序的入口,因此,main()函数也被叫做主函数

main()前面的int表示main()函数执行结束的时候返回一个整数类型的值

​ 所以,在main()函数的最后写return 0; 正好前后呼应

  • main()函数是程序的入口
  • main()函数有且仅有一个
  • ​ 一个项目中可以有多个 .c 文件,但是只能有一个main()函数(因为程序的入口只能有一个)
6.库函数:

​ 为了不再重复实现常见的代码,让程序提升开发效率,C语言标准规定了一组函数,这些函数再由不同的编译器厂商根据标准进行实现,提供给程序员使用。这些函数组成了一个函数库,被称为标准库,这些函数也被称为库函数,在这个基础上一些编译器厂商可能会额外扩展提供部分函数(这些函数其它的编译器不一定支持)

​ 一个系列的库函数一般会声明在同一个文件中,所以库函数的使用,要包含对应的头文件

7.关键字:

​ C语言中有一批保留名字的符号,这些符号被称为保留字或者关键字

  • 关键字都有特殊的意义,是保留给C语言使用的
  • 在创建标识符变量的时候是不能和关键字重复的
  • 关键字也是不能自己创造的

C语言的32个关键字:

在这里插入图片描述

注意: 在 C99 标准中加入了 inlinerestrictBoolComploex等关键字,不过使用最多的还是上面的32个关键字

8.字符和ASCII编码:

​ 在键盘上敲出的各种符号,如:ak@#5等,这些符号都被称为字符,在C语言中字符是用单引号括起来的,如:'a''k''@''#''5'

​ 在计算机中所有的数据都是以二进制的形式存储的,而我们给每一个字符所编写的二进制序列,这个就叫做编码,后来,为了方便大家相互通信,不造成混乱,美国国家标准协会(ANSI)出台了一个标准ASCII编码,将键盘上敲出的所有字符都进行了固定的编号,C语言中采用字符就遵循了ASCII编码的方式

ASCII编码表:

在这里插入图片描述

  • 字符AZ的ASCII编码值是从6590
  • 字符az的ASCII编码值是从97122
  • 对应的大小写字符(a和A)的ASCII编码值的差值是32
  • 数字字符09的ASCII编码值是从4857
  • 换行\n的ASCII编码值是:10
  • 在这些字符中ASCII编码值0~31的这32个字符是不可打印字符,无法显示到屏幕上观察
//将字符32~127这些可打印字符在屏幕上打印出来
#include <stdio.h>
int main()
{int i = 0;for(i = 32;i <= 127;i++){if(i % 16 ==0)printf("\n");printf("%c",i);}return 0;
}

注意: 1. 字符的打印格式使用占位符 %c 来指定

​ 2. 要想表示字符一定是要单引号括起来的

9.字符串和\0:

​ C语言中使用双引号括起来的一串字符就被称为字符串,如:"乔越"

字符串的打印格式使用占位符 %s 来指定

双引号引起来的叫字符串,单引号引起来的才叫字符,字符串是一串字符,里面是由一个或者多个字符组成的,也可以没有字符,当里面一个字符都没有的时候,叫做空字符串

​ 汉字是占两个字符的,所以单引号不能包裹汉字,只能包裹单个字符,而双引号可以包裹汉字

打印字符串有两种方式:

//第一种:
#include <stdio.h>
int main()
{printf("haha\n");return 0;
}
//第二种:
#include <stdio.h>
int main()
{printf("%s","haha");return 0;
}

​ C语言字符串中在字符串的末尾还隐藏着一个字符\0,这个\0是字符串的结束标志

例如: 字符串"abcdef",实际上看到的是6个字符:'a''b''c''d''e''f' 但是实际上在其末尾还隐藏一个 \0 的转义字符,\0是字符串的结束标志,所以在使用库函数printf()打印字符串或strlen()计算字符串长度的时候,遇到 \0 就自动停止了

C语言也可以把一个字符串放在一个字符数组中(数组就是一组数据):

#include <stdio.h>
int main()
{//C语言中用char类型来表示字符//char qwe[3];//表示这个数组里面可以放3个字符//char qwr[5];//表示这个数组里面可以放5个字符char qwe[] = "abc";//这个的里面有\0char qwr[] = {'a','b','c'};//这个的里面没有\0printf("%s\n",qwe);//正常输出printf("%s\n",qwr);//会出现乱码return 0;
}

图示:

在这里插入图片描述

注意: 因为qwe遇见\0就终止运行了,所以打印的结果只有a,b,c,而qwr后面没有\0终止,所以会继续往下运行,直到遇见\0终止打印,所以打印结果会有其它内存空间的内容

#include <stdio.h>
int main()
{char qwr[] = {'a','b','c','\0'};printf("%s\n",qwr);//输出正常,不再出现乱码return 0;
}
#include <stdio.h>
int main()
{char asd[] = "abc\0def";printf("%s\n",asd);//只会打印abc,因为后面遇到了\0终止return 0;
}

库函数strlen():用来返回一个字符串的长度

#include <stdio.h>
#include <string.h> //strlen库函数的头文件
int main()
{int len = strlen("abc"); //用int类型的变量去接收,然后返回这个字符串的长度printf("%d\n",,len);return 0;
}

注意: 上述代码会出现警告,因为strlen()返回的类型本质是size_t,而size_t这个类型是专门用来接收求长度的函数的返回值的,并且在strlen()这个库函数时要包含头文件

#include <stdio.h>
#include <string.h> //strlen库函数的头文件
int main()
{size_t len = strlen("abc"); //用size_t类型的变量去接收,然后返回这个字符串的长度printf("%d\n",,len);return 0;
}
10.转义字符:

​ 转义字符 – 转变了原来意思的字符

例如:\n是一个转义字符表示换行的意思,可以简单的理解为 \ 让n的意思发生了转变,n本来只是一个普通的字符,被 \ 转义为换行的意思

C语言中的转义字符:

转义字符描述
?在书写连续多个问号时使用,防止它们被解析成三字母词,在新的编辑器上无法验证了
\ ’用于表示字符常量 ’
\ ‘’用于表示一个字符串内部的双引号
\ \用于表示一个反斜杠,防止它被解释为一个转义序列符
\a警报,使终端发出警报声或出现闪烁,或者两者同时发生
\b退格键,光标回退一个字符,但不删除字符
\f换页符,光标移到下一页,在现代系统上,已经无法验证了,行为改成类似于\v
\n换行符
\r回车符,光标移到同一行的开头
\t制表符,光标移到下一个水平制表位,通常是下一个8的倍数
\v垂直分隔符,光标移到下一个垂直制表位,通常是下一行的同一列
\ddd字符的八进制表示形式,ddd表示1~3个八进制的数字 如:\130 – 表示字符X
\xdd字符的十六进制表示形式,dd表示2个十六进制的数字 如:\x30 – 表示字符0
\0null字符,没有内容,用于字符串的结束标志,其ASCII编码值是0
#include <stdio.h>
int main()
{printf("%c",'\'');// \':打印一个单引号printf("%s","\"");// \":打印一个双引号printf("C:\\test\\test.c");// \\:防止被转义printf("\a");// \a:触发系统(蜂鸣器)警报printf("abc\bdef");//会打印abdef,\b:将c删除,退了一格printf("ab\tdef\tq\txxxxx");// \t:对齐到\t的宽度return 0;
}
#include <stdio.h>
int main()
{printf("%c",'\130');// 将130这个八进制数字转换为十进制数字:0*8**0+3*8**1+1*8**2=88,0乘8的0次方+3乘8的1次方+1乘8的2次方=88,而88在ASCII表上对应的字符就是Xprintf("%c",'\x30');// 将30这个十六进制数字转换为十进制数字:0*16**0+3*16**1=48,0乘16的0次方+3乘16的1次方=48,而48在ASCII表上对应的字符就是0return 0;
}

注意: 一个转义字符算是一个字符

​ 当求字符长度的时候,如果有 \ 后面加上其它的字符的情况,那么也会被默认为是一个转义字符,虽然无作用,但会将它们算作成一个字符

#include <stdio.h>
#include <string.h>
int main()
{size_t len = strlen("c:\test\123.c");printf("%d\n",len); //最后的结果,字符数量是9.因为一个转义字符只能算是一个字符(\t;\123)return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{size_t len = strlen("c:\te\st\123.c"); //答案也是9,因为C语言把\s整体当成了一个转义字符printf("%d\n",len); return 0;
}
11.语句和语句分类:

​ C语言的代码是由一条一条的语句构成的,C语言的语句可分为以下五类:

​ 1. 空语句

​ 2. 表达式语句

​ 3. 函数调用语句

​ 4. 复合语句

​ 5. 控制语句

一:空语句

​ 空语句是最简单的,一个分号就是一条语句,也就是空语句

​ 空语句出现的地方是:这里需要一条语句,但是这条语句不需要做任何事,就可以写一个空语句

#include <stdio.h>
int main()
{; //空语句return 0;
}

二:表达式语句

​ 表达式语句就是在表达式的后面加上分号

#include <stdio.h>
int main()
{int a = 10;int b = 0;b = a + b; //表达式语句printf("%d",b);return 0;
}

三:函数调用语句

​ 在函数调用的时候,也会加上分号,就是函数调用语句

#include <stdio.h>
int Add(int x,int y)
{return x+y;
}
int main()
{printf("haha\n");// 函数调用语句int ret = Add(2,3);// 函数调用语句return 0;
}

四:复合语句

​ 复合语句就是代码块,一对大括号中的代码就构成一个代码块,也被称为复合语句

#include <stdio.h>
void print(int arr[],int sz)//函数的大括号中的代码也构成复合语句
{int i = 0;for(i = 0;i < sz;i++){printf("%d",arr[i]);}
}
int main()
{int i = 0;int arr[10] = {0};for(i = 0;i < 0;i++)//for循环循环体的大括号中的就是复合语句{arr[i] = 10 - i;printf("%d\n",arr[i]);}return 0;
}

五:控制语句

​ 控制语句用于控制程序的执行流程,以实现程序的各种结构方式

​ C语言支持的三种结构:顺序结构;选择结构;循环结构

​ C语言有九种控制语句,可分为以下三类:

  1. 条件判断语句(分支语句):if语句;switch语句
  2. 循环执行语句:do while语句;while语句;for语句
  3. 转向语句:break语句;goto语句;continue语句;return语句
12.注释:
  • ​ 注释是对代码的说明,编译器会忽略注释,也就是,注释对代码没有任何影响
  • ​ 注释是给人(自己或者他人)看的
  • ​ 好的注释可以帮助理解代码,但不要过度注释,不写没有必要的注释

注释的两种形式:

	第一种:
/*我是第一种注释我还是多行注释
*/第二种:
//我是第二种注释,是单行注释

注意: 第一种的注释风格是不支持嵌套注释的,也就是注释里面还有一个这样的注释

;选择结构;循环结构

​ C语言有九种控制语句,可分为以下三类:

  1. 条件判断语句(分支语句):if语句;switch语句
  2. 循环执行语句:do while语句;while语句;for语句
  3. 转向语句:break语句;goto语句;continue语句;return语句
12.注释:
  • ​ 注释是对代码的说明,编译器会忽略注释,也就是,注释对代码没有任何影响
  • ​ 注释是给人(自己或者他人)看的
  • ​ 好的注释可以帮助理解代码,但不要过度注释,不写没有必要的注释

注释的两种形式:

	第一种:
/*我是第一种注释我还是多行注释
*/第二种:
//我是第二种注释,是单行注释

注意: 第一种的注释风格是不支持嵌套注释的,也就是注释里面还有一个这样的注释

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

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

相关文章

软件科技成果鉴定测试需提供哪些材料?

为了有效评估科技成果的质量&#xff0c;促进科技理论向实际应用转化&#xff0c;所以需要进行科技成果鉴定测试。申请鉴定的科技成果范围是指列入国家和省、自治区、直辖市以及国务院有关部门科技计划内的应用技术成果&#xff0c;以及少数科技计划外的重大应用技术成果。   …

让聪明的车连接智慧的路,C-V2X开启智慧出行生活

“聪明的车 智慧的路”形容的便是车路协同的智慧交通系统&#xff0c;从具备无钥匙启动&#xff0c;智能辅助驾驶和丰富娱乐影音功能的智能网联汽车&#xff0c;到园区的无人快递配送车&#xff0c;和开放的城市道路上自动驾驶的公交车、出租车&#xff0c;越来越多的车联网应用…

99、NeRF ray space

CG相机模型 在图形学中最常用的相机模型的原理和小孔成像是类似的。 不同之处在于&#xff0c;如上图&#xff0c;小孔成像得到的图像是倒立的&#xff0c;但是我们希望得到的图像是正向的&#xff0c;因此&#xff0c;我们选择小孔前成像。 从 3D 到 2D 的投影&#xff0c;…

成本核算基础知识 – 了解实际成本

原文地址&#xff1a;Basics of Costing – Understanding Actual Cost | SAP Blogs 建议大家打开原文地址查看原文&#xff0c;有些地方专业术语翻译不一定正确。希望搬的这些文章能帮助查资料的大家一个信息&#xff0c;再跳转到原文去看。 一、概述 大家好&#xff0c; …

解释AI决策,这10个强大的 Python 库记得收藏!

本文整理了10个常用于可解释AI的Python库&#xff0c;方便我们更好的理解AI模型的决策。 什么是XAI&#xff1f; XAI&#xff08;Explainable AI&#xff09;的目标是为模型的行为和决策提供合理的解释&#xff0c;这有助于增加信任、提供问责制和模型决策的透明度。XAI 不仅…

C#-快速剖析文件和流,并使用

目录 一、概述 二、文件系统 1、检查驱动器信息 2、Path 3、文件和文件夹 三、流 1、FileStream 2、StreamWriter与StreamReader 3、BinaryWriter与BinaryReader 一、概述 文件&#xff0c;具有永久存储及特定顺序的字节组成的一个有序、具有名称的集合&#xff1b; …

算法-贪心思想

贪心的思想非常不好解释&#xff0c;而且越使用权威的语言解释越难懂。而且做题的时候根据自己的理解可能直接做出来&#xff0c;但是非要解释一下怎么使用的贪心的话&#xff0c;就懵圈了。一般来说&#xff0c;贪心的题目没有固定的套路&#xff0c;一题一样&#xff0c;不过…

redis主从复制【面试必看】

在分布式系统中&#xff0c;希望使用多个服务器来部署redis&#xff0c;存在以下几种redis的部署方式 主从模式主从哨兵集群模式 主从模式 在若干个redis节点中&#xff0c;有的是主节点&#xff0c;有的是从节点 假设有三个物理服务器&#xff08;称为是三个节点&#xff…

Rust测试字符串的移动,Move

代码创建了一个结构体&#xff0c;结构体有test1 字符串&#xff0c;还有指向字符串的指针。一共创建了两个。 然后我们使用swap 函数 交换两个结构体内存的内容。 最后如上图。相同的地址&#xff0c;变成了另外结构体的内容。注意看指针部分&#xff0c;还是指向原来的地址…

CSS 绝对定位问题和粘性定位介绍

目录 1&#xff0c;绝对定位问题1&#xff0c;绝对定位元素的特性2&#xff0c;初始包含块问题 2&#xff0c;粘性定位注意点&#xff1a; 1&#xff0c;绝对定位问题 1&#xff0c;绝对定位元素的特性 display 默认为 block。所以行内元素设置绝对定位后可直接设置宽高。脱离…

ATECLOUD电源自动测试系统打破传统 助力新能源汽车电源测试

随着新能源汽车市场的逐步扩大&#xff0c;技术不断完善提升&#xff0c;新能源汽车测试变得越来越复杂&#xff0c;测试要求也越来越严格。作为新能源汽车的关键部件之一&#xff0c;电源为各个器件和整个电路提供稳定的电源&#xff0c;满足需求&#xff0c;确保新能源汽车的…

Ubuntu中编译出Windows的可执行程序(.exe)

1、前言 在嵌入式开发中&#xff0c;交叉编译是很常见的情况&#xff0c;如果你把Windows电脑也看做一块高性能的开发板&#xff0c;那在Ubuntu中编译出Windows上运行的可执行程序也是很好理解的行为。 2、安装mingw64环境 sudo apt-get install mingw-w64 3、测试编译链是否安…

来自bioBakery Lab的宏基因组学微生物群落的代谢功能分析工具-HUMAnN 3.0的安装配置及分析使用方法-安装填坑

HUMAnN 3.0 简介&#xff1a; HUMAnN 3.0 是一个用于宏基因组数据分析的工具&#xff0c;能够从宏基因组测序数据中推断出微生物群落的代谢功能信息。它可以识别微生物群落中存在的代谢途径&#xff0c;并定量这些通路的丰度。HUMAnN 3.0 依赖于多个工具和数据库来实现这些功能…

C++新经典模板与泛型编程:策略类模板

策略类模板 在前面的博文中&#xff0c;策略类SumPolicy和MinPolicy都是普通的类&#xff0c;其中包含的是一个静态成员函数模板algorithm()&#xff0c;该函数模板包含两个类型模板参数。其实&#xff0c;也可以把SumPolicy和MinPolicy类写成类模板—直接把algorithm()中的两…

Python 网络爬虫(三):XPath 基础知识

《Python入门核心技术》专栏总目录・点这里 文章目录 1. XPath简介2. XPath语法2.1 选择节点2.2 路径分隔符2.3 谓语2.4 节点关系2.5 运算符3. 节点3.1 元素节点(Element Node)3.2 属性节点(Attribute Node)

获取类class对象的方式

一、什么是class对象 Class类位于java核心包lang包中&#xff0c;它是反射的源头。Class对象用于记录每个类的运行时数据结构&#xff0c;或者说是在内存中访问类的静态数据的接口&#xff0c;每个类都有一个唯一的Class对象。Class对象不能直接通过new来获取&#xff0c;因为…

【ArcGIS Pro微课1000例】0051:创建数据最小几何边界范围(点、线、面数据均可)

本实例为专栏系统文章:创建点数据最小几何边界(范围),配套案例数据,持续同步更新! 文章目录 一、工具介绍二、实战演练三、注意事项一、工具介绍 创建包含若干面的要素类,用以表示封闭单个输入要素或成组的输入要素指定的最小边界几何。 工具界面及参数如下所示: 核心…

CSS——sticky定位

1. 大白话解释sticky定位 粘性定位通俗来说&#xff0c;它就是相对定位relative和固定定位fixed的结合体&#xff0c;它的触发过程分为三个阶段 在最近可滚动容器没有触发滑动之前&#xff0c;sticky盒子的表现为相对定位relative【第一阶段】&#xff0c; 但当最近可滚动容…

FacetWP Relevanssi Integration相关性集成插件

点击阅读FacetWP Relevanssi Integration相关性集成插件原文 FacetWP Relevanssi Integration相关性集成插件是FacetWP与用于高级搜索的 Relevanssi 插件的集成显着增强了您网站的搜索功能。这个强大的工具使您的用户能够轻松找到他们寻求的特定内容&#xff0c;无论他们的查询…

联邦多任务蒸馏助力多接入边缘计算下的个性化服务 | TPDS 2023

联邦多任务蒸馏助力多接入边缘计算下的个性化服务 | TPDS 2023 随着移动智能设备的普及和人工智能技术的发展,越来越多的分布式数据在终端被产生与收集&#xff0c;并以多接入边缘计算(MEC)的形式进行处理和分析。但是由于用户的行为模式与服务需求的多样,不同设备上的数据分布…