0
点赞
收藏
分享

微信扫一扫

“学习嵌入式的最大收获”

Brose 2022-04-15 阅读 67
c语言

所有的技术原理和本质都在基础技术上,只有基础技术才能让你上升到更高层次,在技术的世界里,量变无法导致质变,掌握基础技术及原理可以让自己推导答案和趋势。

 C语言学习目标

掌握C语言的语法规则,数组,循环,函数,指针等。

要学会一些算法,比如冒泡排序,快速排序,递归等。

在学习的过程中理解什么是面向过程,为将来学习c艹,Java等面向对象语言做准备。

如何学习C语言

掌握基础知识,为将来进一步学习打下良好的基础

上机实践,通过大量的例题学习怎么设计算法,培养解题思路

养成良好的编程习惯,注释一定要写,不然一周后自己写的代码都不认识了

这三行代码作用

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

int main()//主函数,main函数程序的入口必有而且只能有一个

{

for (int i = 0; i < 10; i++)

{

printf("%d\n", i);//这个输出函数不是C语言自带的,而是包含在库函数<stdio.h>里面

}

return 0;//将结果返回到函数调用处

}

怎么解决学习C语言过程中遇到的问题

问题分析:对上级分配的工作要进行认真的分析,研究所给出的条件,分析最后应该达到的目标,找出解决问题的规律,选择解题的方法。

设计算法:例如要解一个方程式,就要选择用什么方法求解,并且把求解的每一步清晰的写出来。

编写程序:根据得到的算法,用c语言编写出源代码,在写代码的过程中尽可能的添加注释。

编译源程序:对源程序进行编辑、编译和连接,得到可执行程序,如果编译不通过,根据报错提醒,解决报错。

运行程序、分析结果:能得到程序不一定意味着程序就是正确的,要对结果进行分析,看它是否合理。

编写程序文档:许多程序是提供给别人使用的,提供给用户使用的程序,必须有说明书。内容包括:程序名称、功能、运行环境、程序的装入和启动、需要输入的数据,以及其他注意事项。

c语言代码结构

一个程序由一个或者多个源程序文件组成,一个规模较小的程序,往往只包括一个源程序文件,一个源程序文件包括3部分:

1、预处理指令,由预处理得到的结果与程序其他部分一起,组成一个完整的、可以用来编译的最后的源程序,然后由编译程序对该源程序正式进行编译,才能得到目标程序。

2、全局声明,即在函数之外进行数据声明。

3、函数定义,自己定义的函数

函数是c程序的主要组成部分

1、程序的几乎全部工作都是由各个函数分别完成的,函数是c程序的基本单位,在设计良好的程序中,每个函数都用来实现一个或几个特点的功能.

一个函数包括两部分

1、函数首部,即函数的第一行,包括函数名、函数类型、函数属性、函数参数、参数类型。

2、函数体,包括声明部分和执行部分。

函数总是从main函数开始的

1、不管main函数在整个程序中的位置如何,main函数可以放在程序的开头,也可以放在程序的结尾,或在一些函数之前,或一些函数之后。

程序中对计算机的操作是由函数中的c语句完成的

1、如赋值,输入输出数据的操作都是由相应的c语句实现。

在每个数据声明和语句的最后必须有一个分号

1、分号是c语句的必要组成部分。

C语言本身不提供输入输出语句

1、输入和输出的操作是由库函数scanf和printf函数来完成。

程序应当包含注释

1、一个好的、有使用价值的源程序都应当加上必要的注释,增加程序的可读性。

常量:在程序运行过程中,其值不能被改变的量称为常量。

分为以下几类:

1、整型常量

2、实型常量

3、字符常量(分为普通字符和转义字符)

4、字符串常量

5、符号常量

变量:变量代表一个有名字的,具有特定属性的一个存储单元。

常变量:c99允许使用常变量,常变量具有变量的基本属性只是不允许修改。

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

#define PI 3.14//属于常变量声明了PI的值是3.14,PI的值就不能改变

int main()//主函数

{

int number = 5;//number是个变量,5是个常量

float number_2 = 1.234;

double number_3 = 3.5678;//number_2和number_3属于实型变量,后面的值是常量

char character = 'a';//character是字符变量,'a'是字符常量

return 0;

}

浮点类型

1、单精度浮点类型:float

2、双精度浮点类型:double

3、复数浮点型:float_comlex,double_comple,long long_comple  (编译系统为每一个float型变量分配4个字节,数值以规范化的二进制数指数形式存放在存储单元中)(double型为了扩大能表示的数值范围,用8个字节存储一个double型数据,可以得到15位有效数字)

枚举类型:enum

字符和字符代码

1、字母

2、数字

3、专门符号

4、空格符

5、不能显示的字符

字符变量

1、字符变量是用类型符char定义字符变量

整型变量    (注意:这里占多少个字节跟系统和编译器规定有关!可以在编译器上自己试试查看)

1、基本型:类型说明符为int在内存中占2个字节或4个字节(vs2022中是4个字节)

2、短整型:类型说明符为short int或short  (vs2022中是2个字节)

3、长整型:类型说明符为long int 一个long int型变量的值的范围是-2的31次方~2的31次方-1,即-2147483648~2147483647.,(vs2022中是4个字节)

4、双长整型:long long int    (vs2022中是8个字节,这个是c99新增的类型)

标识符:用来对变量、符号常量名、函数、数组、类型等命名的有效字符序列统称为标识符。

c语言规定标识符只能由字母、数字和下划线3种字符组成,且第1个字符必须为字母或下划线。

C语言%求余

#include<stdio.h>

int main()

{

int num1, num2;

num1 = 4;

num2 = 3;//如果后一个数比前一个大,求余的值就还是前一个数

printf("两数求余的值:%d\n", num1 % num2);

}

C语言算术表达式和运算符的优先级与结合性

1、在表达式求值时,先按运算符的优先级别顺序执行,例如先乘除后加减。如果在一个运算对象两侧的运算符的优先级别相同,则按照结合方向“自左至右”即先左后右执行。

c语言强制类型转换运算符

1、一般形式:(类型名)(表达式)

(double)a:将a转换成double类型

(int)(x+y):将x+y的值转换成int类型

c语言常用运算符总结

1、算术运算符:+   -   /   %   ++   --

2、关系运算符:>  <  ==  > = <  !=

3、逻辑运算符:! &&   ||

4、位运算符:<<  >> ~ | ^ &

5、赋值运算符:=

6、条件运算符:?:

7、逗号运算符:  ,

8、指针运算符:*

9、求字节运算符: sizeof

10、强制类型转换运算符: (需要强制转换的类型)

11、成员运算符:.  ->

12、下标运算符:[]

13、函数调用运算符:函数名()

c语言关系运算符是什么

在c语言中,比较符称为关系运算符,所谓关系运算就是比较运算,将两个数值进行比较,判断其比较的结果是否符合给的条件。

#define _CRT_SECURE_NO_WARNINGS //忽略安全检测,不然使用scanf会报错

#include<stdio.h>

int main()

{

int num;

scanf("%d", &num);

if (num<5)

{

printf("num小于5");

}

else

{

printf("unm不小于5");

}

}

c语言逻辑运算符优先次序

1、有3种逻辑运算符:与(AND),或(OR),非(NOT)。在basic和pascal等语言可以在程序中直接用and,or,not作为逻辑运算符。在c语言中不能在程序中直接使用,而是用其他符号代替。

2、!(非)  &&(与)  ||(或) 中“!”优先级最高。

3、逻辑运算符中的“&&”和“||”低于关系运算符,“!”高于算术运算符。

4、&&和||是双目运算符,它要求有两个运算对象(操作数),!是一目运算符,只要求有一个运算对象。

c语言逻辑表达式

逻辑表达式的值应该是一个逻辑量“真”或“假”。C语言编译系统在表示逻辑运算结果时,以数值1代表“真”,以0代表“假”,但在判断一个量是否为“真时”,以0代表“假”,以非0代表“真”。即将一个非零的数值认作“真”。

c语言逻辑变量

这是c99所增加的一种数据类型。可以将关系运算和逻辑运算的结果存到一个逻辑型变量中,以便于分析和运算。定义逻辑变量用类型符Bool。(vs2022没有这个)

c语言条件运算符(三目运算符)

一般形式

表达式1:? 表达式2:: 表达式3

条件运算符由两个符号(?和:)组成,必须一起使用。要求有3个操作对象,称为三目运算符。

三目运算符可以这样理解,先计算出表达式1的值,表达式1后面的问号表示“该往哪里”,有两条路,如果表达是1的值为真(非0),自然直接到表达式2,如为假(0值),就绕过表达式2,到表达式3.

条件表达式由三个运算对象和条件运算符组成

c语言使用条件运算符注意事项

1、条件运算符优先于赋值运算符

2、表达式“2”和表达式“3”不仅可以是数值表达式,还可以是赋值表达式或函数表达式。

3、条件表达式相当于一个不带关键字if的if语句,用它处理简单选择结构可以使程序简洁。

4、三目运算符是C语言中唯一一个三目运算符。

c语言printf用法

1、一般格式

printf(格式控制,输出表列)

格式控制是用双引号括起来的一个字符串,称“转换控制字符串”,简称“格式字符串”,

包含:(格式声明:由%和格式字符组成,如%d、%f。)(普通字符:既需要在输出时原样输出的字符。)

输出表列是程序需要输出的一些数据,可以是常量、变量或表达式。

c语言printf注意事项:输出是以计算机为主体而言的,从计算机向输出设备输出数据称为输出,C语言本身不包含输出语句,如果不加头文件,代码就会报错。

c语言scanf函数

一般形式

scanf(格式控制,地址表列)

格式控制和printf函数一样,地址表列是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。

(格式声明只包含一部分:以%开始,以一个格式字符结束,中间可以插入附加的字符。)

使用c语言scanf函数的注意事项:

1、scanf函数中的格式控制后面应当是变量地址,而不是变量名。

2、如果在格式控制字符串中除了格式声明以外还有其他字符,则在输入数据时在对应的位置上应输入这些字符相同的字符。

3、在用%c格式声明输入字符时,空格字符和转义字符中的字符都作为有效字符输入。

4、在输入数值数据时,如输入空格、回车、tab键或遇到非法字符时会认为你的输入结束。

C语言putchar函数

想从计算机向显示器输出一个字符,可以调用系统函数库中的putchar函数。

一般形式

putchar(c)

putchar是put character(给字符)的缩写,其作用是输出字符变量c的值,显然它是一个字符。getchar函数的值就是从输入设备得到的字符。getchar函数只能接受一个字符。如果想输入多个字符就要用多个getchar函数。

c语言if语句的一般形式

一般形式

f(表达式)语句1

[else语句2]

if语句中的表达式可以是关系表达式、逻辑表达式,甚至还可以是数值表达式。

语句1和语句2可以是一个简单的语句,也可以是一个复合语句,还可以是其他的if嵌套。

c语言if语句最常见的3种形式

1、没有else子句部分

if(表达式)语句1

2、有else子句部分

if(表达式)

    语句1

else

   语句2

3、在else部分又嵌套多层的if语句

if(表达式1)语句1

else if(表达式2)语句2

else if (表达式3)语句3

......

语句1、语句2.....语句m等是if语句中的“内嵌语句”,它们是if语句中的一部分。

if语句注意事项:整个if语句可以写在多行上,也可以写在一行上。if语句无论写在几行上,都是一个整体,属于同一语句。内嵌语句也可以是一个if语句。在if语句中要对给定的条件进行检查,判断所给定的条件是否成立。

c语言switch多分支语句

如果分支较多,嵌套的if语句层数多,程序繁长而且可读性降低,因为c语言提供switch语句直接处理多分支选择。

一般形式

switch(表达式)

{

case 常量1:语句1

case 常量2:语句2

.....

case 常量n:语句n

default:语句n+1

}

例:#define _CRT_SECURE_NO_WARNINGS //忽略安全检测,不然使用scanf会报错

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

int main()//主函数

{

char grade;//定义成绩级别字符变量

printf("输入成绩级别:");//提示语句

scanf("%c", &grade);//键盘输入

printf("成绩段:");//提示语句

switch (grade)//switch 多分支

{

case'A':printf("85-100\n"); break;//输出A的成绩分布

case'B':printf("70-84\n"); break;//输出B的成绩分布

case'c':printf("60-69\n"); break;//输出C的成绩分布

case'D':printf("不及格小于60\n");//输出D的成绩分布

default:printf("输入成绩等级有误\n");//输出成绩级别有误

}

return 0;//函数返回值为0

}

switch多分支注意事项:

1、switch后面括号内的“表达式”,其值的类型应为整数类型,包括字符型。

2、switch下面的花括号内是一个复合语句。

3、可以没有default标号,此时如果没有与switch表达式相匹配的case常量,则不执行任何语句,流程转到switch语句的下一个语句。

4、各个case标号出现的次序不影响执行结果,case标号只起标记作用。

5、每一个case常量必须互不相同。

6、在case子句中虽然包含了一个以上执行语句,但可以不必用花括号括起来,会自动顺序执行本case标号后面所以的语句。

C语言while语句

一般形式:while(表达式)语句

注意事项:

1、其中的语句就是循环体,可以是一个简单的语句,也可以是符复合语句。执行循环体的次数是由循环条件控制的,这个循环条件就是上面一般形式中的“表达式”,也称为循环条件表达式。

2、while循环可以简单的记为,只要当循环条件表达式为真(即给定的条件成立),就执行循环体语句。

3、while循环特点是:先判断条件表达式,后执行循环体语句。

例:#include<stdio.h>//头文件

int main()//主函数

{

int num;

num = 15;

while (num > 10)//循环条件

{

num--;

printf("%d\n", num);

}//循环体

}

c语言do while介绍

除了while语句以外,c语言还提供了do...while语句来实现循环。

一般形式:

do

语句

while  (表达式)

例:#include<stdio.h>//头文件

int  main()//主函数

{

int num;//定义整型变量

num = 15;//给num赋值15

do//关键词do

{

num--;

printf("%d\n", num);

} while (num > 10);//先运行第8行和第9行的代码然后再判断num是否大于10如果符合条件的话会继续执行第8行和第9行的代码(dowhile语句一定要有一个分号结束)

}

c语言for语句介绍

除了可以用while语句和do.....while语句实现循环外,c语言还提供for语句实现循环

指针(一般用%x十六进制输出)

直接访问:通过变量名直接访问地址

间接访问:把变量的地址放到另一个变量中,使用时先找到后者的地址,从中取出前者的地址

指针变量:存放地址的变量

struct是自定义结构体(sizeof是一个计算结构类型所占内存字节数的关键字)

strcpy是字符串拷贝

常用内存管理函数有分配内存空间函数malloc 、calloc释放内存空间函数free

动态内存分配函数

void*malloc(unsigned size)

功能:在内存的动态存贮区(堆)中分配一块长度为size的连续空间。

返回值:指针,存放被 分配内存的起始地址。若未申请地址,则返回null(0)。

void*:指向任何类型的数据,在使用时,要进行强制类型转换。

例如:(int*)malloc(sizeof(int))

(struct student*)malloc(sizeof(struct student))

sizeof是一个运算符作用是计算需要分配的空间的字节数

void free(void*ptr)

功能:释放由malloc()申请的动态内存空间,ptr存放该空间的首地址。

返回值:无。

p=(struct student*)malloc(sizof(struct student));

......

free(p);

实践才能把知识变成技能,坚持才有沉淀。

举报

相关推荐

0 条评论