C语言常见概念

C语言常见概念

目录

  1. 初识C语言
  2. C语言的历史和辉煌
  3. 编译和连接
  4. 源文件和头文件
  5. 第一个C语言程序
  6. 函数的框架
  7. 标识符与关键字
  8. 字符与ASCLL编码
  9. 字符串和\0
  10. 转义字符
  11. 语句
  12. 注释

1. 初识C语言

1.1 什么是C语言

在了解C语言之前,我们应该先介绍一下什么是计算机语言。

计算机语言,简单的来说,就是用于人与计算机交流的语言。正如人与人之间可以通过汉语,英文交流一般,人想要给计算机下达指令,让计算机工作,也需要特点的语言,即计算机语言。

计算机语言多种多样,除了我们要介绍的C语言,还有C++,Java,Python,Golong等多种语言。

1.2 底层开发

C语言是一门通用的编程语言,广泛应用于底层开发

我们可以简单的将计算机分为一下几个部分;

  1. 应用软件
  2. 操作系统
  3. 硬件
  4. 用于操作系统驱动硬件的驱动层

以上几个部分中,操作系统,硬件和驱动层成为底层,而应用系统称为上层

2. C语言的历史和辉煌

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

操作系统

常见的操作系统有以下几款:

  1. Windows:广泛用于个人的计算机
  2. MaxOS:苹果
  3. Linux:用于服务器
  4. Unix:多用于实验室

在这里插入图片描述

3. 编译和连接

C语言是一门编译型计算机语言,C语言源代码都是文本文件,文本文件本身无法执行,必须通过编

译器翻译和链接器的链接,生成二进制的可执行文件,可执行文件才能执行。

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

过程。

一个工程⼀般都会有多个源文件组成,如下图所示,演示了源程序经过编译器和链接器处理的过程。

在这里插入图片描述

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

这就是在Windows电脑上C语言程序生成的exe可执行文件。

在这里插入图片描述
在这里插入图片描述

4. 源文件和头文件

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

我们把源代码所在的文件,即后缀为.c或.cpp的文件成为源文件。

把后缀为.h,需要#include<>引入的成为头文件。

在这里插入图片描述
在这里插入图片描述

5. 第一个C语言程序

#include <stdio.h>
int main()//这是主函数
{
printf("Hello World\n");
return 0;//主函数返回值
}

5.1 函数

我们先引入函数这一个定义。在大家的认知里面,函数是数学领域的一个名词。但在编程语言里,函

数有着不同的定义。在编程语言里面,你可以把函数看做一台机器,我们可以对对他发出指令,让他完成一系列操作,并最终给我们以反馈。

  1. 开始执行时,函数可以被输入一些值
  2. 执行过程中,函数可以做一些事情
  3. 执行完成后,函数可以返回一些值

5.2 主函数

main 翻译成中文是主要的、最重要的意思,而在C语言里面表示一个主函数。

一个标准的主函数如下:

int main() // 这是主函数
{
	return 0; // 主函数返回值
}

主函数的作用:

    1. 在后面的学习中,我们会定义各种各样的函数,而主函数是整个C语言程序的入口。我们需要通过主函数,来调用其他的函数
  • 2.每个C语言代码,只能有且只有一个main函数。
  • 3.即使一个项目中有多个.c文件,但是只能有一个main函数(因为程序的入口只能有一个)

main 后面的括号 () 内为输入参数,我们上面所写的代码中括号内为空,即此处主函数没有输入值。

5.3 int

int是 integer(整数)的缩写,表明了函数的返回值类型为整数类型

5.4 return

return 后跟函数的 返回值 ,为0。而0是一个整数,和函数名前面的 int 对应。

5.5 printf

printf也是一个函数,但是这个并不是一个自定义函数,而是一个系统自带的函数。 printf由单词 print(打印) 和单词 format(格式) 的首字母f组成,意为格式化打印。即在屏幕上的控制台中输出字符。

5.6 #include<stdio.h>

printf函数 并不是我们定义的函数,而是系统自带的函数。这个函数被写在头文件 stdio.h中,我们要使用 printf ,就必须先让编译器理解 printf 。用 #include 命令,我们就可以调用文件 stdio.h 的函数 printf
stdio.h名为标准输入输出文件,源于 standard input & output。而 .h为头文件的后缀

5.7 \n

\n换行符,它能结束这一行的打印,从下一行开始新的打印。它是一种转义字符。

综上,我们可以基本得出我们所写的代码的含义:

  1. 主函数什么都没有输入
  2. 主函数打印了一行Hello World到屏幕上
  3. 主函数返回了0

6. 函数的框架

通过第一个C语言程序hello,world,我们可以简单的推断出函数的框架。

{

做点什么事情;

return 函数返回值;

}

因此,我们可以自己尝试写一个函数。

比如,我们写一个用于加法计算的函数:

#include<stdio.h>
int Add(int x, int y)
{
	return x + y;
}
int main()
{
	int result = Add(2, 3);
	printf("%d", result);
	return 0;
}

7. 标识符与关键字

7.1 标识符

标识符,指我们自己命名的,用于表示一个变量、函数或其他实体的名称。

标识符必须进行声明或定义后才能被编译器识别,如Add被定义成返回值为整型的函数,result,x,

y被声明成一个整数类型变量。如果编译器遇到未经声明或定义的标识符,将会因无法理解而报错。

在C语言中,标识符可以依据自身的喜好随意命名,但是必须遵循以下规则:

  • 标识符由字母,数字,下划线组成
  • 标识符的第一个字符必须是字母或下划线,而不能是数字
  • 标识符的字母区分大小写
  • 标识符不能与关键字重复

7.2 关键字

C语言中规定的一些有特殊意义的符号,不能由自己创建

C语言中共有32个关键字:

auto  break  case  char  const  continue  default  do  double  else  enum  ex
float  for  goto  if  int  long  register  return  short  signed  sizeof
struct  switch  typedef  union  unsigned  void  volatile  while

8. 字符与ASCLL编码

8.1 字符

在计算机上敲出的各种符号,如a,x,1,@,#,_等都被称为字符

在C语言中,字符使用单引号括起来的。

字符的占位符为 %c

8.2 ASCLL编码

在计算机中,所有的数据都是由二进制的形式储存的。因此我们给这些字符编了一个二进制序列,即编码。现在我们使用的是美国国家标准学会出台的ASCLL编码。

在这里插入图片描述

//字符的输出
#include<stdio.h>
int main()
{
	printf("%c", 81);//81是Q的ASCLL码值
	printf("%c", 'Q');
	return 0;
}
//可输出字符打印
#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 32; i <= 127; i++)
	{
		printf("%c ", i);
		if (i % 16 == 15)
			printf("\n");
	}
	return 0;
}

在这里插入图片描述

我们不需要记住所有的ASCII码表中的数字,使用时查看就可以,不过我们最好能掌握几组特殊的数据:

  • 字符AZ的ASCII码值从6590​
  • 字符az的ASCII码值从97122​
  • 对应的大小写字符(a和A)的ASCII码值的差值是32​
  • 数字字符09的ASCII码值从4857​
  • 换行\n 的ASCII值是:10​
  • 在这些字符中ASCII码值从0~31 这32个字符是不可打印字符,无法打印在屏幕上观察​

9.0 字符串和\0

C语言中如何表示字符串呢?使用双引号括起来的一串字符就被称为字符串,如:“abcdef”,就是一个。

%s为字符串的占位符。

#include<stdio.h>
int main()
{
	printf("%s\\n", "hello,C");
	printf("hello,C");
	return 0;
}

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

在这里插入图片描述

我们可以通过代码来理解:

#include<stdio.h>
#include<string.h>
int main()
{
	char arr1[] = "abc";
	char arr2[] = { 'a', 'b' , 'c' };
	char arr3[] = { 'a', 'b' , 'c' , '\0' };
	printf("%s\n%s\n%s\n", arr1, arr2, arr3);
	int len1 = strlen(arr1);
	int len2 = strlen(arr2);
	int len3 = strlen(arr3);
	printf("%d\n%d\n%d\n", len1, len2, len3);
	return 0;
}

运行结果为:

在这里插入图片描述

我们可以看到,字符串中有\0 和无\0的结果不同,这是因为arr2因为没有\0而打印没有停止,继续打印了一些随机值。

10. 转义字符

像前面所提到的\n,\0都是转义字符。转义字符顾名思义:转变原来意思的字符。

比如字符n,在字符串打印时能能打印出来。

#include<stdio.h>
int main()
{
	printf("%s", "abcdnef");
	return 0;
}

https://i-blog.csdnimg.cn/direct/ac9a6800b16c4afbbe0b0f1224d937bf.png#pic_center

如果我们修改一下代码,在n的前面加上\,变成如下代码:

#include<stdio.h>
int main()
{
	printf("%s", "abcd\\nef");
	return 0;
}

在这里插入图片描述

这就是转义字符的作用。\n表示换行的意思。
C语言中还有一些像这样的转义字符:

  • ? :在书写连续多个问号时使用,防止他们被解析成三字母词,在新的编译器上没法验证了。
  • ’ :用于表示字符常量’
  • " :用于表示一个字符串内部的双引号
  • \ :用于表示一个反斜杠,防止它被解释为一个转义序列符
  • \a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发生。
  • \b :退格键,光标回退一个字符,但不删除字符若继续输出,则替换后续字符。
  • \f :换页符,光标移到下一页。在现代系统上,这已经反映不出来了,行为改成类似于\v 。
  • \n :换行符。
  • \r :回车符,光标移到同一行的开头若继续输出,则替换后续字符。
  • \v :垂直分隔符,光标移到下一个垂直制表位,通常是下一行的同一列
  • \t :制表符,光标移到下一个水平制表位,通常是下一个8的倍数

下面2种转义字符可以理解为:字符的8进制或者16进制表示形式​

  • \ddd :d d d表示1~3个八进制的数字。 如: \130 表示字符X
  • **xdd :d d表示2个十六进制**数字。 如: \x30 表示字符0

\0 :null 字符,代表没有内容,\0 就是\ddd 这类转义字符的一种,用于字符串的结束标志,其

ASCII码值是0.​

#include<stdio.h>
int main()
{
	printf("%c\n", '\'');
	printf("%s\n", "\"");
	printf("%s\n", "c:\\test\\code\\test.c");
	//若为\\\t,则编译为“\\”和“\t”
	printf("%c\n", '\130');//八进制
	printf("%c\n", '\x30');//十六进制
	printf("%s", "abcdef\b");
	printf("x\n");
	//x替换f
	printf("%s\r", "abcdefg");
	printf("%s\n", "hijklmn");
	//hijklmn替换abcdefg
	printf("%s\n", "a\taa\taaa\t");
	//a与aa间有7个空格,aa与aaa间有6个空格
	return 0;
}

在这里插入图片描述

11. 语句

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

  • 空语句
  • 表达式语句
  • 函数调用语句
  • 复合语句
  • 控制语句

11.1 空语句

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

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

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

句。

12.2 表达式语句​

表达式语句就是在表达式的后边加上分号。如下所示:

#include <stdio.h>
int main()
{
	int a = 20;
	int b = 0;
	b = a + 5; //表达式语句
	return 0;
}

12.3 函数调用语句​

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

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

12.4 复合语句​

复合语句其实就是前面讲过的代码块,成对括号中的代码就构成一个代码块,也被称为复合语句

#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<10; i++) //for循环的循环体的⼤括号中的就是复合语句
	{
		arr[i] = 10-i;
		printf("%d\n", arr[i]);
	}
	return 0;
}

12.5 控制语句​

控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。

可分成以下三类:

  1. 条件判断语句也叫分支语句:if语句、switch语句;
  2. 循环执行语句:do while语句、while语句、for语句;
  3. 转向语句:break语句、goto语句、continue语句、return语句。

13. 注释

注释是对代码的说明编译器会忽略注释,也就是说,注释对实际代码没有影响

注释是给程序员自己,或者其他程序员看的。

好的注释可以帮我们更好的理解代码,但是也不要过度注释,不要写没必要的注释。

13.1 注释的2种形式​

C 语言的注释有两种表示方法。​

13.1.1 // 的形式**

第一种方法是将注释放在// 之间,内部可以分行。

/* 注释 */
/*
这是⼀⾏注释
*/

这种注释可以插在行内

int fopen(char* s /* file name */, int mode);

上面示例中,/* file name */ 用来对函数参数进行说明,跟在它后面的代码依然会有效执行。

这种注释一定不能忘记写结束符号*/ ,否则很容易导致错误。

printf("a "); /* 注释⼀
printf("b ");
printf("c "); /* 注释⼆ */
printf("d ");

上面示例的原意是,第一行和第三行代码的尾部,有两个注释。

但是,第一行注释忘记写结束符号,导致注释一延续到第三行结束。

// 的这个注释也不支持嵌套注释**,/* 开始注释后,遇到第一个*/ 就认为注释结束了。

/*
printf("a ");
printf("b ");
printf("c "); /* 注释⼆ */
printf("d ");
*/

13.1.2 // 的形式

第二种写法是将注释放在双斜杠// 后面,从双斜杠到行尾都属于注释。这种注释只能是单行,可以

放在行首,也可以放在一行语句的结尾。。

// 这是⼀⾏注释
int x = 1; 
// 这也是注释

不管是哪一种注释,都不能放在双引号里面

双引号里面的注释符号,会成为字符串的一部分,解释为普通符号,失去注释作用。

printf("// hello /* world */ ");

上面示例中,双引号里面的注释符号,都会被视为普通字符,没有注释作用。

13.2 注释会被替换

编译时,注释会被替换成一个空格,所以 min/* 这里是注释 */Value 会变成 min Value ,而不

minValue

内容概要:本文介绍了一个关于三相桥式全控整流及有源逆变电路的实验仿真模型,重点研究三相整流器与逆变器在Simulink环境下的建模与仿真技术。内容涵盖电力电子变换器的工作原理、控制策略设计、系统动态响应分析,并进一步扩展至10kV配电网中不同中性点接地方式(中性点不接地、经小电阻接地、经消弧线圈接地)下的单相、两相短路接地及相间短路故障的仿真研究,全面呈现了电力系统典型故障的暂态特性。此外,文档还整合了丰富的科研资源,涵盖电力系统优化、新能源并网、故障诊断、微电网调度等多个前沿方向,充分体现了Matlab/Simulink在电气工程仿真中的核心地位和广泛应用价值。; 适合人群:电气工程、自动化、电力电子等相关专业的高校学生、科研人员及工程技术人员,具备一定的电路理论基础和仿真软件操作经验者更佳。; 使用场景及目标:①用于教学实验中帮助理解三相整流与逆变电路的工作机制;②支撑科研项目中对电力系统故障特性的建模与分析;③作为开发新型控制算法(如PWM控制、低电压穿越等)的仿真验证平台;④辅助完成毕业设计、课题研究或工程方案评估; 阅读建议:此资源以Simulink仿真实现为核心,强调理论与实践结合,建议读者在学习过程中同步搭建模型,动手调试参数,深入理解各模块功能与系统整体行为,同时可参考文中提供的完整资源链接拓展研究视野。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值