版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《C语言程序设计》知识点总结形式参数(形参)是函数定义时的参数,仅在函数内部有效,用于接收调用时传递的实际参数(实参)的值。*函数声明:也称为函数原型,用于告诉编译器函数的名称、返回值类型和参数列表,以便编译器在函数被调用时进行语法检查。函数声明通常放在头文件(`.h`)中或调用函数之前。形式与函数定义的头部基本一致,但以分号结尾,且参数名可以省略。例如:`intadd(inta,intb);`或`intadd(int,int);`。函数调用*函数调用的一般形式为:`函数名(实际参数列表);`。实参可以是常量、变量、表达式等,其类型和个数必须与形参一一对应兼容。函数调用时,实参的值会传递给形参(值传递),对形参的修改不会影响实参。函数的参数传递*值传递:实参将其值复制一份传递给形参。函数内部对形参的任何修改都不会影响到实参本身。*地址传递:当形参为指针类型时,实参传递的是变量的地址。此时,函数内部通过指针可以间接访问和修改实参变量的值。这是实现函数外部数据修改的常用方式。函数的嵌套调用与递归调用*嵌套调用:在一个函数的定义中可以调用其他函数,形成函数的嵌套调用。*递归调用:函数直接或间接地调用自身。递归函数通常包含两部分:递归出口(结束递归的条件)和递归体(将问题分解为规模更小的同类子问题并调用自身)。递归能简洁地解决某些问题(如阶乘、斐波那契数列、汉诺塔等),但可能带来额外的栈空间开销和时间开销,使用时需注意栈溢出风险。变量的作用域与存储类别*作用域:变量有效的范围。可分为局部变量(在函数内部或复合语句中定义,仅在定义它的函数或复合语句内有效)和全局变量(在所有函数外部定义,在整个源文件乃至其他源文件中都有效,需谨慎使用以避免命名冲突和副作用)。*存储类别:决定变量的存储位置、生命周期和初始化方式。包括`auto`(自动变量,默认,存储在栈区,随函数调用创建,函数返回销毁)、`static`(静态变量,存储在静态区,生命周期贯穿程序始终,若为局部静态变量则作用域仍局限于函数或复合语句内)、`register`(寄存器变量,建议编译器将其存储在CPU寄存器中,以提高访问速度,不能取地址)、`extern`(外部变量声明,用于声明在其他文件中定义的全局变量)。六、数组:同类型数据的有序集合数组是一组具有相同数据类型的变量的有序集合,这些变量在内存中连续存放。数组通过下标(索引)来访问其中的元素,下标从0开始。一维数组*定义:`类型说明符数组名[常量表达式];`。常量表达式指定数组的长度(元素个数)。例如:`intscores[5];`。*初始化:在定义数组时可以对其元素赋初值。例如:`inta[5]={1,2,3,4,5};`(完全初始化);`intb[5]={1,2};`(部分初始化,未初始化元素默认为0);`intc[]={1,2,3};`(省略长度,编译器根据初始化列表元素个数确定数组长度为3)。*元素访问:`数组名[下标]`。例如:`a[0]=10;``printf("%d",a[1]);`。注意避免下标越界,C语言不检查数组下标越界,越界访问可能导致不可预知的错误。二维数组*定义:可以看作是“数组的数组”。一般形式为:`类型说明符数组名[常量表达式1][常量表达式2];`。常量表达式1为行数,常量表达式2为列数。例如:`intmatrix[3][4];`定义了一个3行4列的二维整型数组。*初始化:可以按行初始化,如`inta[2][3]={{1,2,3},{4,5,6}};`;也可以按元素在内存中的排列顺序(行优先)初始化,如`intb[2][3]={1,2,3,4,5,6};`。同样可以部分初始化和省略第一维的长度(但第二维不能省略)。*元素访问:`数组名[行下标][列下标]`。例如:`matrix[1][2]=5;`。字符数组与字符串*字符数组:用于存储字符序列。其定义、初始化和访问与其他类型数组类似。例如:`charstr[5]={'H','e','l','l','o'};`。*字符串:C语言中没有专门的字符串类型,通常用一个以空字符`'\0'`(ASCII码值为0)结尾的字符数组来表示和存储字符串。`'\0'`是字符串结束的标志。字符串可以用字符串常量直接初始化字符数组,例如:`charstr[]="Hello";`(编译器会自动在末尾添加`'\0'`,数组长度为6)。*字符串处理函数:C标准库`<string.h>`提供了丰富的字符串处理函数,如`strlen(s)`(求字符串长度,不包括`'\0'`)、`strcpy(s1,s2)`(字符串复制)、`strcat(s1,s2)`(字符串连接)、`strcmp(s1,s2)`(字符串比较)等,熟练掌握这些函数能极大提高编程效率。七、指针:C语言的灵魂指针是C语言的核心特性,也是其强大功能的源泉。指针变量存储的是另一个变量的内存地址。通过指针,可以直接访问和操作内存中的数据,实现高效的数据访问、动态内存管理、函数间传递复杂数据等。指针的定义与使用*指针变量定义:`类型说明符*指针变量名;`。类型说明符是指针所指向变量的数据类型,称为指针的基类型。例如:`int*p;`定义了一个指向整型变量的指针`p`。*取地址运算符&:用于获取变量的地址。例如:`inta=10;p=&a;`表示将变量`a`的地址赋给指针`p`,此时称`p`指向`a`。*间接访问运算符*(解引用运算符):用于通过指针访问其所指向的变量的值。例如:`*p=20;`表示将20赋给`p`所指向的变量(即`a`);`printf("%d",*p);`输出`a`的值。指针与变量、数组、函数*指针与变量:通过指针可以间接操作变量,这在函数参数传递中尤为重要,使用指针作为形参可以实现“引用传递”的效果,使得函数内部能够修改函数外部变量的值。*指针与数组:数组名在大多数情况下会被隐式转换为指向数组首元素的指针(常量指针)。因此,`a[i]`等价于`*(a+i)`。可以通过指针来遍历数组元素,通常比下标法更高效。指向数组的指针也可以进行算术运算(`+`,`-`),其步长由指针的基类型决定。*指针数组:数组元素为指针的数组。例如:`ch
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年浙江省义乌市高一数学下册期末考试模拟卷(综合题)附答案
- 2026年广东省兴宁市高一数学下册期末考试模拟检测卷及参考答案【黄金题型】
- 2026中级注册安全工程师《法规》真题及答案
- 2026年福建省南安市高一数学下册期末考试模拟测试卷【有一套】附答案
- 2026年湖北省丹江口市高一数学下册期末考试模拟测试卷及参考答案(夺分金卷)
- 河北省沧州市泊头市八县联考2025-2026学年高二上学期11月期中考试生物试题
- 河北省2025-2026学年高二上学期大数据应用调研阶段性联合测评(Ⅱ)生物试题
- 2026年江苏省兴化市高一数学下册期末考试模拟考试卷附参考答案【达标题】
- 辽宁省锦州市省重点2025-2026学年高一上学期期中考试化学试题
- 2026年黑龙江省抚远市高一数学下册期末考试模拟检测卷及答案参考
- DB3207∕T 1062-2024 三倍体牡蛎筏式吊笼养殖技术规程
- 监理工程质量管理表态发言
- 临床大面积下肢皮肤脱套伤伴全身多处骨折合并失血性休克患者护理
- 跨越电力线路施工规范详细解析
- 保险消保工作汇报
- 中国农业大学《电子电路基础》2023-2024学年第一学期期末试卷
- DB5107∕T 059-2018 莴笋周年绿色高效生产技术规范
- 企事业单位住房指标转让合同范本
- DB11-T 1014-2021 液氨使用与储存安全技术规范
- 知识点2、化学式和化合价-2022年浙江省中考科学一轮复习化学部分
- DB13-T 5871-2023 矿山地质环境恢复治理工程资料管理规程
评论
0/150
提交评论