c语言基础知识总结_第1页
c语言基础知识总结_第2页
c语言基础知识总结_第3页
c语言基础知识总结_第4页
c语言基础知识总结_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

c语言基础知识总结注释:用于解释代码,不参与编译。单行注释以`//`开头,多行注释以`/*`开始,以`*/`结束。2.2数据类型C语言提供了丰富的数据类型,用于表示不同类型的数据。*基本数据类型:*整型(IntegerTypes):用于表示整数。如`int`(基本整型)、`short`(短整型)、`long`(长整型)、`longlong`(更长的整型),以及它们的无符号版本`unsignedint`等。具体的字节长度和取值范围取决于编译器和操作系统。*浮点型(Floating-PointTypes):用于表示带小数点的实数。如`float`(单精度浮点型)、`double`(双精度浮点型)、`longdouble`(长双精度浮点型)。*字符型(CharacterType):`char`,用于表示单个字符,在内存中以ASCII码值存储。也可以看作是一种特殊的小范围整型。*构造数据类型:*数组(Array):相同类型数据的有序集合。*结构体(Struct):不同类型数据的集合。*共用体(Union):一种特殊的结构体,所有成员共享同一块内存空间。*枚举(Enum):将变量的可能取值一一列举出来。*指针类型(PointerType):用于存储变量的内存地址。*空类型(VoidType):`void`,表示“无类型”或“空”,常用于函数返回值(表示无返回值)和指针(表示指向未知类型的地址)。2.3变量与常量变量(Variable):在程序运行过程中其值可以改变的量。*定义:`数据类型变量名;`,例如`intage;`。*初始化:定义时赋予初始值,例如`intscore=90;`。*作用域:变量有效的代码范围,分为局部变量(在函数或代码块内部定义,仅在该范围内有效)和全局变量(在所有函数外部定义,整个程序均可访问)。常量(Constant):在程序运行过程中其值不能改变的量。*字面常量:直接出现在代码中的值,如`123`(整型常量)、`3.14`(浮点型常量)、`'A'`(字符常量)、`"Hello"`(字符串常量)。*符号常量:用标识符表示的常量。通常使用`#define`预处理指令定义,如`#definePI3.____`;或使用`const`关键字定义,如`constfloatpi=3.____;`。`const`定义的常量具有类型,更安全。2.4运算符与表达式C语言提供了多种运算符,用于对数据进行操作。*算术运算符:`+`(加)、`-`(减)、`*`(乘)、`/`(除)、`%`(取余,仅用于整数)、`++`(自增)、`--`(自减)。*赋值运算符:`=`(简单赋值)、`+=`、`-=`、`*=`、`/=`、`%=`等复合赋值运算符。*比较运算符:`==`(等于)、`!=`(不等于)、`>`(大于)、`<`(小于)、`>=`(大于等于)、`<=`(小于等于)。其结果为逻辑真(1)或假(0)。*逻辑运算符:`&&`(逻辑与)、`||`(逻辑或)、`!`(逻辑非)。用于连接布尔表达式。*位运算符:`&`(按位与)、`|`(按位或)、`^`(按位异或)、`~`(按位取反)、`<<`(左移)、`>>`(右移)。直接对二进制位进行操作。*条件运算符:`表达式1?表达式2:表达式3`,是C语言中唯一的三目运算符。*逗号运算符:`,`,用于将多个表达式连接成一个表达式,取最后一个表达式的值作为结果。*sizeof运算符:用于获取数据类型或变量所占用的内存字节数。表达式(Expression):由运算符和操作数(常量、变量、函数调用等)组成的式子,具有计算功能,并能得到一个结果。2.5控制流语句控制流语句用于改变程序执行的顺序。*顺序结构:程序默认的执行方式,从上到下依次执行。*选择结构(分支结构):*`if`语句:单分支、双分支(`if-else`)、多分支(`if-elseif-...-else`)。*`switch`语句:多分支选择,根据表达式的值跳转到对应的`case`标签。通常与`break`配合使用,防止穿透。`default`标签处理未匹配的情况。*循环结构:*`while`循环:先判断条件,条件为真则执行循环体。*`do-while`循环:先执行一次循环体,再判断条件,条件为真则继续循环。*`for`循环:通常用于已知循环次数的情况,包含初始化、循环条件判断、循环变量更新三个部分。*跳转语句:*`break`:用于跳出`switch`语句或当前循环。*`continue`:用于结束本次循环,直接进入下一次循环条件的判断。*`goto`:无条件跳转到指定的标号处,不建议滥用,以免造成代码逻辑混乱。三、函数函数是C程序的基本功能单元,是实现代码复用和模块化设计的重要手段。*函数定义:`返回值类型函数名(参数列表){函数体}`。*返回值类型:函数执行完毕后返回给调用者的数据类型,若没有返回值则为`void`。*函数名:标识符,遵循命名规则。*参数列表:形式参数(形参),用于接收调用者传递的数据。可以为空(无参函数)。*函数体:实现函数功能的语句块。*函数声明(函数原型):在函数调用之前声明函数的存在,告知编译器函数的返回值类型、函数名和参数列表。通常放在头文件或源文件的开头。*函数调用:`函数名(实际参数列表)`。实参的值会传递给形参。函数调用可以作为表达式的一部分,其值为函数的返回值(若有)。*函数参数传递:*值传递:将实参的值复制一份给形参,形参的修改不影响实参。*地址传递:将实参的地址传递给形参(通常通过指针),形参通过该地址可以访问和修改实参的值。这是C语言实现“引用传递”效果的方式。*函数的作用域与存储类别:*局部变量:在函数内部或复合语句中定义的变量,作用域仅限于定义它的函数或复合语句内部,通常在栈上分配内存,函数调用结束后自动释放。*全局变量:在所有函数外部定义的变量,作用域是整个程序文件,可以被多个函数访问。其生命周期与程序相同。*静态变量:使用`static`修饰的变量。静态局部变量在函数调用结束后不释放内存,其值会保留;静态全局变量的作用域限制在当前源文件。*库函数:C语言标准库提供了大量预定义的函数,如`stdio.h`中的输入输出函数`printf`,`scanf`,`puts`,`gets`等,`string.h`中的字符串处理函数`strlen`,`strcpy`,`strcmp`等。使用库函数需要包含相应的头文件。四、数组数组是一组具有相同数据类型的元素的有序集合,这些元素在内存中连续存储。*定义:`数据类型数组名[数组长度];`,例如`intnumbers[5];`。数组长度必须是常量表达式。*初始化:定义时赋予初始值,例如`intarr[]={1,2,3,4,5};`(数组长度可省略,由初始化列表元素个数决定)。*访问元素:通过下标(索引)访问,`数组名[下标]`,下标从0开始。*数组名:数组名代表数组首元素的地址,是一个常量指针。*多维数组:数组的元素也可以是数组,形成多维数组,如二维数组`intmatrix[3][4];`。字符串:C语言中没有专门的字符串类型,通常使用字符数组来表示字符串,并以空字符`'\0'`作为结束标志。例如`charstr[]="hello";`等价于`charstr[]={'h','e','l','l','o','\0'};`。标准库`string.h`提供了丰富的字符串操作函数。五、指针指针是C语言的灵魂,它存储的是另一个变量的内存地址。*定义:`数据类型*指针变量名;`,例如`int*p;`。`*`表示这是一个指针变量。*取地址运算符`&`:用于获取变量的内存地址,例如`inta;int*p=&a;`。*间接访问运算符(解引用运算符)`*`:用于通过指针访问其所指向的变量的值,例如`*p=10;`等价于`a=10;`。*指针的运算:指针可以进行加减运算,但其步长与指针所指向的数据类型的大小相关。指针之间可以进行比较运算。*指针与数组:数组名是数组首元素的地址,因此可以将数组名赋值给同类型的指针。通过指针可以方便地访问数组元素。*指针与函数:*指针作为函数参数,可以实现函数对实参的修改。*函数返回值可以是指针。*指向函数的指针(函数指针),可以将函数作为参数传递给其他函数,实现回调功能。*动态内存分配:C语言通过标准库函数`malloc`,`calloc`,`realloc`在堆上动态分配内存,使用`free`函数释放已分配的内存,防止内存泄漏。这些函数返回的都是`void*`类型的指针,需要进行强制类型转换。指针功能强大,但也容易出错,如野指针、空指针解引用、内存泄漏等,需要谨慎使用。六、结构体与共用体6.1结构体(Struct)结构体允许将不同类型的数据组合在一起,形成一个新的复合数据类型。*定义:`struct结构体名{成员列表;};`*结构体变量:`struct结构体名变量名;`*成员访问:通过成员运算符`.`或指向结构体的指针运算符`->`访问成员。*结构体数组:由结构体变量组成的数组。*结构体指针:指向结构体变量的指针。6.2共用体(Union)共用体与结构体类似,但所有成员共享同一块内存空间,同一时刻只有一个成员有效,其大小为最大成员的大小。*定义:`union共用体名{成员列表;};`*常用于节省内存空间,或处理不同类型的数据共享存储的情况。七、预处理命令预处理是在编译之前对源代码进行的一些文本替换和处理操作。以`#`开头。*`#include`:包含头文件。`#include<stdio.h>`用于包含标准库头文件,`#include"myheader.h"`用于包含用户自定义头文件。*`#define`:宏定义。*不带参数的宏:`#definePI3.____`*带参数的宏:`#defineMAX(a,b)((a)>(b)?(a):(b))`*`#undef`:取消已定义的宏。*条件编译:*`#ifdef`,`#ifndef`,`#else`,`#elif`,`#endif`:根据宏是否被定义来决定编译哪些代码块。常用于跨平台代码的编写和调试。*`#line`:改变当前行号和文件名。*`#error`:在预处理阶段产生错误信息。*`#pragma`:向编译器发出特定的指令,不同编译器支持的`#pragma`指令可能不同。八、文件操作C语言通过标准库`stdio.h`提供的文件操作函数来读写外部文件。*文件指针(FILE*):用于标识一个打开的文件,是文件操作的句柄。*文件的打开与关闭:*`fopen`函数:打开文件,返回文件指针。需要指定文件名和打开模式(如"r"读,"w"写,"a"追加,"rb"二进制读等)。*`fclose`函数:关闭文件,释放相关资源。*文件的读写:*字符读写:`fgetc`,`fputc`*字符串读写:`f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论