还剩45页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
语言基本语句教学课件C欢迎来到C语言基本语句教学课程本课程将带领您深入了解C语言的核心概念和基本语句,从语言简介到复杂的数据结构我们将逐步探索C语言的魅力,帮助您掌握这门强大的编程语言让我们开始这段激动人心的编程之旅吧!语言简介C高效性可移植性C语言以其高效的执行速度和内存管理而闻名,是系统编程和C语言程序可以轻松地在不同的硬件平台上编译和运行,具有嵌入式系统开发的首选语言优秀的可移植性丰富的库函数底层控制C语言提供了大量的标准库函数,涵盖了从基本输入输出到复C语言允许程序员直接操作内存和硬件,提供了对计算机系统杂数学运算的各种功能的底层控制语言程序结构C预处理器指令包括头文件和宏定义,如#include和#define全局声明定义全局变量和函数原型主函数(main)程序的入口点,所有C程序都必须包含main函数局部声明在函数内部定义的变量和常量语句和表达式执行特定任务的代码块标识符和关键字标识符关键字标识符是用来命名变量、函数、结构体等的名称它们必须以字关键字是C语言中预定义的、有特殊含义的单词它们不能用作标母或下划线开头,后跟字母、数字或下划线C语言对标识符的长识符一些常见的关键字包括度没有限制,但通常建议不要超过31个字符标识符区分大小写,•int,float,char,double例如count和Count是两个不同的标识符•if,else,for,while,do•return,break,continue•struct,union,enum数据类型基本类型枚举类型包括整型(int)、浮点型(float,double)、用于定义命名的整型常量字符型(char)12联合体类型指针类型63允许在同一内存位置存储不同数据类型用于存储内存地址54结构体类型数组类型用户自定义的复合数据类型用于存储同类型数据的集合变量声明和初始化变量声明变量声明告诉编译器变量的名称和类型格式为类型变量名;变量初始化在声明变量的同时给它赋初值格式为类型变量名=初始值;多变量声明可以在一行中声明多个相同类型的变量,用逗号分隔常量定义使用const关键字或#define预处理指令定义常量整型变量的基本操作声明整型变量使用int关键字声明整型变量,如int age;赋值操作可以在声明时初始化,或后续赋值,如age=25;算术运算可进行加、减、乘、除、取模等操作,如int sum=age+5;类型转换整型可以隐式转换为浮点型,但浮点型转整型需要显式转换输出整型使用printf函数和%d格式说明符输出整型值浮点型变量的基本操作声明浮点型变量浮点运算类型转换使用float或double关键可进行加、减、乘、除整型可以隐式转换为浮字声明浮点型变量,如等运算,但要注意精度点型,浮点型之间也可float price;double pi;问题以相互转换输出浮点数使用printf函数和%f格式说明符输出浮点值,可以指定小数位数字符型变量的基本操作声明字符变量1使用char关键字声明字符变量,如char grade;字符赋值2可以直接赋予字符值或ASCII码,如grade=A;或grade=65;字符输入输出3使用getchar函数读取字符,putchar函数输出字符字符运算4字符可以参与算术运算,实际运算的是其ASCII码值字符串操作5字符数组可以用来存储字符串,需要注意结尾的空字符\0算术运算符运算符描述例子+加法a+b-减法a-b*乘法a*b/除法a/b%取模(余数)a%b++自增a++或++a--自减a--或--a赋值运算符简单赋值使用等号(=)将右侧表达式的值赋给左侧变量例如x=10;复合赋值将算术运算和赋值结合在一起,如+=,-=,*=,/=,%=例如x+=5;等价于x=x+5;多重赋值可以在一个语句中对多个变量赋值例如a=b=c=0;类型转换在赋值过程中可能发生隐式类型转换,要注意可能的精度损失关系运算符等于和不等于大小比较•==(等于)•(小于)•!=(不等于)•(大于)•=(小于等于)这些运算符用于比较两个值是否相等或不相等例如if a==b或if x!=0•=(大于等于)这些运算符用于比较两个值的大小关系例如if age=18或while count10逻辑运算符逻辑与()逻辑或(||)逻辑非(!)当两个条件都为真时,当至少一个条件为真时,取反操作,将真变为假,结果为真例如if结果为真例如if假变为真例如ifage18heightscore90||!isRaining170attendance95位运算符按位与()按位或(|)对两个操作数的每一位执行与操作对两个操作数的每一位执行或操作按位异或(^)按位取反(~)对两个操作数的每一位执行异或操作对操作数的每一位取反左移()右移()将操作数的所有位向左移动指定的位数将操作数的所有位向右移动指定的位数自增自减运算符前缀形式后缀形式++i和--i先增加/减少变量的值,然后使用新值i++和i--先使用当前值,然后增加/减少变量的值int i=5;int j=5;printf%d,++i;//输出6printf%d,j++;//输出5printf%d,i;//输出6printf%d,j;//输出6条件表达式语法条件表达式1:表达式2条件评估如果条件为真,执行表达式1;否则执行表达式2返回值整个表达式的值是被执行的那个表达式的值嵌套使用条件表达式可以嵌套,但可能影响可读性语句if-elseif语句if条件{语句块}if-else语句if条件{语句块1}else{语句块2}if-else if-else语句if条件1{语句块1}else if条件2{语句块2}else{语句块3}嵌套if语句在if或else的语句块中包含另一个if语句语句switch语法结构switch表达式{case常量1:语句1;break;case常量2:语句2;break;...default:默认语句;}case标签每个case后面必须是一个常量表达式break语句用于跳出switch语句如果省略,会继续执行下一个casedefault标签可选,当没有case匹配时执行通常放在最后循环语句概述2do-while循环while循环先执行一次语句块,然后在条件为真时重复执1行当条件为真时重复执行语句块for循环3以固定次数重复执行语句块循环控制5嵌套循环使用break和continue控制循环的执行在一个循环内部包含另一个循环4循环while语法while条件{循环体}执行流程首先检查条件,如果为真,执行循环体;然后重复这个过程条件评估在每次循环开始时评估条件循环变量通常需要在循环内部更新循环变量,以避免无限循环应用场景适用于不确定循环次数,但知道循环终止条件的情况循环do-while语法do{循环体}while条件;执行流程先执行一次循环体,然后检查条件如果条件为真,继续执行循环条件评估在每次循环结束时评估条件至少执行一次无论条件如何,循环体至少会执行一次应用场景适用于需要至少执行一次循环体的情况,如用户输入验证循环for语法特点for初始化;条件;更新{循环体}•结构紧凑,适合固定次数的循环•循环变量的作用域限制在for循环内•初始化在循环开始前执行一次•可以在初始化部分声明多个变量•条件每次循环开始前检查•可以省略任何或所有的三个表达式•更新每次循环结束后执行嵌套循环定义嵌套循环是指在一个循环内部包含另一个循环结构外层循环每执行一次,内层循环将完整执行一遍应用常用于处理多维数组、矩阵运算等复杂数据结构性能考虑嵌套循环可能导致程序执行时间显著增加,使用时需要注意效率语句break功能立即终止当前循环或switch语句的执行循环中使用跳出最内层的循环,继续执行循环后的语句switch中使用结束switch语句的执行,防止fall-through嵌套循环中只能跳出当前所在的循环,不影响外层循环语句continue功能1跳过当前循环的剩余部分,直接进入下一次循环while和do-while循环2跳转到循环条件的判断部分for循环3跳转到更新表达式,然后进行条件判断嵌套循环4只影响最内层的循环,不影响外层循环的执行函数概述优势组成部分提高代码重用性、模块化类型程序设计、提高可读性函数名、参数列表、返回库函数(标准函数)和用类型和函数体户定义函数定义调用方式函数是一组执行特定任务通过函数名和参数列表调3的语句的集合用函数2415函数声明和定义函数声明函数定义函数声明告诉编译器函数名称、返回类型和参数通常放在头文函数定义包含函数的实际代码它包括函数头和函数体件中或主函数之前返回类型函数名参数列表{返回类型函数名参数列表;//函数体例int addinta,int b;//包含一系列语句return表达式;}函数参数传递值传递将实参的值复制给形参函数内对形参的修改不影响实参指针传递传递变量的地址函数可以通过指针修改原始变量的值数组传递数组名作为参数时,实际上传递的是数组的首地址结构体传递可以通过值传递整个结构体,也可以传递结构体的指针函数返回值返回类型在函数声明和定义时指定,可以是任何基本数据类型或自定义类型return语句用于从函数返回一个值,并结束函数的执行void函数不返回值的函数,可以使用不带表达式的return语句提前结束返回数组C语言不允许直接返回数组,但可以返回指向数组的指针返回结构体可以直接返回结构体,或返回指向结构体的指针局部变量和全局变量局部变量全局变量•在函数或代码块内部声明•在所有函数外部声明•只在声明它的函数或代码块内有效•在整个程序中都可以访问•函数调用结束后自动销毁•程序运行期间一直存在•存储在栈上,访问速度快•存储在全局数据区,可能影响程序的可维护性•有助于保护数据,提高程序的模块化•便于在多个函数间共享数据,但过度使用可能导致程序难以理解和维护数组概述定义声明索引数组是一组相同类型的数据元素的集类型数组名[元素个数];例如int数组元素通过索引访问,索引从0开合,这些元素在内存中连续存储numbers
[10];始例如numbers
[0]表示第一个元素初始化多维数组可以在声明时初始化,如int numbers[]={1,2,3,4,5};C语言支持多维数组,如二维数组int matrix
[3]
[3];一维数组声明类型数组名[大小];例如int scores
[5];初始化可以在声明时初始化int scores
[5]={85,92,78,89,95};访问元素使用索引访问元素scores
[2]表示第三个元素遍历通常使用for循环遍历数组元素作为函数参数传递数组给函数时,实际上传递的是数组的首地址二维数组声明类型数组名[行数][列数];例如int matrix
[3]
[4];初始化可以按行初始化int matrix
[3]
[4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};访问元素使用两个索引matrix
[1]
[2]表示第二行第三列的元素遍历通常使用嵌套的for循环遍历二维数组字符串操作字符串定义字符串长度字符串复制字符串连接在C中,字符串是以空字符\0使用strlen函数获取字符串长使用strcpy函数将一个字符串使用strcat函数将一个字符串结尾的字符数组例如char度(不包括结尾的空字符)复制到另一个字符串追加到另一个字符串末尾str[]=Hello;指针概述定义声明指针是一个变量,其值为另一个变量的内12类型*指针名;例如int*ptr;存地址指针算术取地址操作符63可以对指针进行加减运算,用于数组操使用运算符获取变量的地址作NULL指针解引用操作符54指向无效内存地址的指针,通常用0或使用*运算符访问指针指向的值NULL表示指针声明和赋值指针声明指针赋值指针声明的一般形式为类型*指针名;可以通过以下方式给指针赋值•int*iptr;//声明一个指向整型的指针•使用取地址运算符int x=10;int*ptr=x;•char*cptr;//声明一个指向字符的指针•指向数组int arr
[5];int*ptr=arr;•float*fptr;//声明一个指向浮点型的指针•动态内存分配int*ptr=int*mallocsizeofint;•NULL赋值int*ptr=NULL;指针运算增减运算指针加减整数,会根据指针类型调整偏移量例如int*ptr;ptr++;指针相减两个同类型指针相减,得到它们之间的元素个数比较运算可以比较两个指针的大小,通常用于数组遍历数组索引可以使用指针进行数组索引操作例如*ptr+i等价于ptr[i]void指针可以指向任何类型,但在使用前需要进行类型转换指针与数组数组名as指针数组名是指向数组第一个元素的常量指针指针索引可以使用指针来索引数组元素例如*arr+i等价于arr[i]指针数组元素为指针的数组例如int*ptr_arr
[5];数组指针指向整个数组的指针例如int*arr_ptr
[5];动态内存分配malloc1分配指定字节数的内存返回void*指针,需要类型转换calloc2分配指定数量的元素,每个元素大小为指定字节数初始化为零realloc3调整之前分配的内存块的大小可以增加或减少内存free4释放之前分配的内存防止内存泄漏结构体概述定义声明使用结构体是C语言中用户自定义的复合使用struct关键字声明结构体例如可以创建结构体变量、结构体指针,数据类型,可以存储不同类型的数据struct Person{char name
[50];int以及结构体数组项age;};访问成员嵌套结构体使用点运算符.访问结构体成员对于结构体指针,使用箭结构体可以包含其他结构体作为成员头运算符-结构体定义和初始化结构体定义结构体初始化struct Student{struct Students1={张三,20,
3.8};char name
[50];int age;struct Students2;float gpa;strcpys
2.name,李四;};s
2.age=22;s
2.gpa=
3.9;这定义了一个名为Student的结构体,包含姓名、年龄和GPA可以在声明时初始化,或者后续单独给每个成员赋值结构体成员访问点运算符箭头运算符结构体数组嵌套结构体对于结构体变量,使用点运算对于结构体指针,使用箭头运使用数组索引和点运算符例使用多个点运算符例如符.访问成员例如算符-访问成员例如ptr-如students
[0].age=20;person.address.city=北京;student.age=20;age=20;结构体数组定义结构体数组是一个数组,其元素都是相同类型的结构体声明struct Studentstudents
[50];//声明一个包含50个Student结构体的数组初始化可以在声明时初始化,或者后续逐个元素初始化访问使用数组索引和点运算符访问结构体成员例如students
[0].name遍历通常使用for循环遍历结构体数组的元素共用体概述声明2定义使用union关键字声明共用体例如union共用体是一种特殊的数据类型,允许在相同的1Data{int i;float f;char str
[20];};内存位置存储不同的数据类型内存使用3共用体的大小等于最大成员的大小应用访问5常用于需要在不同时间保存不同类型数据的场一次只能使用一个成员,因为它们共享同一内景,以节省内存4存位置共用体定义和使用共用体定义共用体使用union Data{union Datadata;int i;float f;data.i=10;char str
[20];printf%d,data.i;};data.f=
3.14;printf%f,data.f;这定义了一个名为Data的共用体,可以存储整型、浮点型或字符strcpydata.str,Hello;串printf%s,data.str;注意每次只能使用一个成员,因为它们共享同一内存空间枚举类型定义枚举是C语言中的一种用户定义类型,用于定义命名整型常量声明使用enum关键字声明枚举例如enum Days{MON,TUE,WED,THU,FRI,SAT,SUN};赋值默认从0开始递增,也可以显式指定值例如enum Status{SUCCESS=1,FAILURE=0};使用可以用作变量类型,也可以直接使用枚举常量例如enum Daystoday=MON;总结和展望核心概念掌握实践能力培养进阶学习方向通过本课程,我们详细探讨了C语言每个主题都配有实例和练习,帮助您建议深入学习文件操作、动态内存管的基本语句,从变量和数据类型到复将理论知识转化为实际编程技能理和多线程编程等高级主题杂的结构体和指针项目实践持续学习鼓励您开始独立的编程项目,将所学知识应用到实际问题解编程技术不断发展,保持学习新标准和最佳实践的习惯至关决中重要。
个人认证
优秀文档
获得点赞 0