C语言程序设计知识点总结02
2023-04-26 04:59:25 来源:博客园
C语言程序设计知识点总结02
递归概念(recursion):
函数直接或间接地调用自己。 直接递归:函数直接调用自己。A调用A自己。 间接递归:函数间接调用自己。A调用B,B再调用A等。递归编程要点:一定要注意递归结束条件和参数的变化。
生存期(lifetime): 变量何时生成及何时撤销。作用域(scope) : 变量在程序的什么范围内是可以使用的。存储类别(storage type): 变量存储在哪种存储器区域中并以何种方式存储。
全局变量(global variable):在任何函数之外定义的变量。局部变量(local variable):在函数或语句块之内定义的变量。
(相关资料图)
作用域原则:
1、全局变量的作用域为定义它的位置到文件结束。 局部变量的作用域为定义它的函数或语句块内部。2、当全局变量与局部变量同名时,在局部变量的作用域内局部变量起作用,全局变量被屏蔽。3、可以用extern关键字扩展全局变量的作用域。4、全局变量用static修饰时只能在本文件内起作用。生存期原则:
1、全局变量的生存期为整个程序的生存期,即从程序进入内存到程序运行结束退出内存。 非静态的局部变量的生存期为进入定义它的函数或语句开始到退出该函数或语句块为止。2、静态的局部变量的生存期为整个程序的生存期,即从程序进入内存到程序运行结束退出内存。局部非静态变量:修饰为:auto或无,register分配在栈或寄存器中。局部静态变量:修饰为:static分配在全局数据段中。全局变量:分配在全局数据段中。
C程序基本结构:
一个C程序由一个或多个函数构成,这些函数分布在一个或多个源文件中,每个文件称为一个可编译单元。模块化编译方法: 先将各个可编译单元分别编译,然后再将其链接起来构成可执行程序。
编译预处理: 在编译器编译源程序之前先进行的一些处理,如包含头文件,宏定义和宏展开以及条件编译等。C源程序中以#开头的行均为编译预处 理。头文件: 通常包含类型定义,常量定义,函数声明等。宏: 用一个名字(宏名)命名一个字符串。在编译之前,将程序中的所有宏名替换成对应的字符串,然后再编译。 注意:字符串和标识符中的和宏同名的串不替换!条件编译: 根据特定的条件来决定是否编译某些代码段。数组(Array):
相同类型的变量,在内存中连续存储。数组名指出了其存储的首地址,每个变量称为一个数组元素,数组中元素的个数称为数组的大小。数组元素的引用通过下标(index)进行。 数组为程序员提供了定义和处理多个同类型变量的方便。
一维数组的定义:
语法格式:数组元素类型 数组名[ 数组大小 ];例如:int arr[10];注意:数组大小必须为常量表达式。一维数组元素的引用:
语法格式:数组名[ 下标 ]注意: 1. 下标必须为整型表达式。 2. 第一个元素的下标为0,最后一个为数组大小减1。 3. 如果数组元素下标超出正常的范围,则称为越界,下标越界不会导致语法错误,但通常会导致逻辑错。一维数组的初始化:
1. 定义时初始化: A. 完全初始化 int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int a[ ] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; B. 部分初始化 int a[10] = {1, 2, 3}; /* 其它元素为0 */2. 使用时初始化:使用前先给各个元素赋值。 scanf(“%d”, &a[0]);简单查找算法:
1、顺序查找。(数组可无序!)
2、折半查找。(数组必有序!)
简单排序算法:
1、 冒泡排序。
数组作为函数的参数:
传递的只是数组名,即数组在内存的首地址,并不把所有的数组元素的值传递给函数。在函数内对数组的操作也就是对原来的数组进行操作。
字符数组:
每个数组元素是字符的数组。 例:char str[ ] = {‘a’, ‘b’, ‘c’};字符串:
用双引号括起来的若干个字符构成的序列。如“abc”。 注意:C语言中字符串是以字符数组的形式在内存中存储的,每个字符以ASCII码存储,结束符为’\0’。 “a”在内存中为:’a’,‘\0’。而‘a’在内存中为’a’。 sizeof(“a”) = 2; strlen(“a”) = 1; sizeof(‘a’) = 4 // C99的标准, "a"是整型字符常量,常量!常量!常量!被看成是int型, 所以占4字节。 字符串的初始化:
1. char str1[ ] = {‘a’, ‘b’, ‘c’, ‘\0’}; 2. char str2[ ] = {“abc”}; 3. char str3[ ] = “abc”; 4. char str4[4] = {‘a’, ‘b’, ‘c’, ‘\0’}; 5. char str5[4] = {“abc”}; 6. char str6[4] = “abc”;字符串操作库函数:
1. gets与puts:输入输出 2. strlen:求字符串长度 3. strcpy:字符串拷贝 4. strcmp:字符串比较 5. strchr:串中查找字符 6. strcat:字符串连接二维数组的定义及初始化:
语法格式:类型 数组名[行数][列数]; 注意:二维数组定义时行数和列数必须是常量表达式。二维数组在内存中按行存储。 int a[2][3] = { {1, 2, 3}, {4, 5, 6}}; int a[ ][3] = { {1, 2, 3}, {4, 5, 6}}; int a[ ][3] = {1, 2, 3, 4, 5, 6};二维数组元素的引用:
数组名 [行号][列号] 注意:行号和列号必须是整型表达式。行号和列号的范围为[0, 大小 – 1]。
标签:
- 加快虚拟仿真实训基地建设 启动职业学校信息化建设试点很必要
- “双减”后如何在满足学生多样需求方面做“加法”?
- 处于生理活跃期且心理发展不成熟 高校开设公共卫生必修课很必要
- 打造高水平人才队伍 爱与希望的种子正在西部地区发芽
- 河南封丘“学生餐后呕吐腹泻”调查:配餐点“未批先餐” 家长盼说法
知识
- 他把银行卡卖给骗子,“黑吃黑”“截胡”十万元
- “老司机”4S店试驾豪车 结果油门当刹车撞了
- 新开工改造城镇老旧小区5.34万个
- 发动巡河志愿者2万余名 “用心护好每一条河”
- 假客服的套路:伪装成大平台客服,层层布局引人上钩
人物
- 新疆阿克苏地区库车市发生4.1级地震 震源深度18千米
- 浙江两轮核酸检测结果均为阴性 无新增本土阳性感染者
- 浙大紫金港校区已解封 有7337人有序离开该校区
- 抵返哈尔滨人员须持48小时内核酸检测阴性证明
- 重庆入河排污口整治工作推进至全市26个区县
- 【同心粤港澳 携手大湾区】南头古城,搭建深港澳三地文化创意活动交流平台
- 黑龙江讷河市启动全员核酸检测 目前讷河市全员核酸检测结果均为阴性
- 2021年广东省第七届风筝锦标赛落幕
- 长三角区域生态环境部门“云签约”长江大保护倡议书
- 四川省第二批政法队伍教育整顿:立案审查调查省级政法机关干警58人
- 藏不住了!你同事里有许多“武林高手”……
- 古老长城重焕新生机
- 让老年人更适应数字生活
- 浪漫之城打造山海城一体新地标
- 喜马拉雅的深情和誓言
- 浙江杭州2例无症状感染者系感染德尔塔变异株
- 徐州无新增确诊病例 核酸检测55515人结果均为阴性
- 内蒙古通辽市新增1例本土确诊病例、1例无症状感染者
- 青年学生成艾滋病感染高发人群 “社会疫苗”如何打?
- 上海本轮疫情涉及闭环管理的医疗机构全面恢复门急诊
- 内蒙古通辽市科尔沁区一地调整为中风险地区
- 甘肃培树“农家巧娘”增技能:返乡创业掌勺又“掌柜”
- 江西无新增本土确诊病例 上饶全面恢复正常生产生活秩序
- 内蒙古满洲里新增本土确诊病例1例 当地开展第二轮大规模核酸检测
- 海南首次发现有环志的世界极危鸟种勺嘴鹬
- 中老铁路上会四国语言的列车长:用心维护中老友谊的桥梁
- 宁夏45例新冠肺炎确诊病例均已治愈出院
- 江西中烟工业有限责任公司原总经理姚庆艳接受审查调查
- 内蒙古通辽新增本土确诊和无症状感染者各1例 轨迹公布
- 一场“网络劝生者”和“网络劝死者”的战役
- 生活在闹钟里的丈夫:自己迟一秒,渐冻症妻子就会多一分疼
- 内蒙古通辽市科尔沁区发现2名初筛阳性人员
- 11月28日16-24时,内蒙古新增本土确诊病例1例
- 辽宁新冠肺炎确诊病例零新增
- 黑龙江新增本土无症状感染者1例
- 奥密克戎毒株为何“需要关注”?现有防疫工具还有效吗?
- 冷空气继续影响我国中东部 华北黄淮等地有雾和霾天气
- 寒潮预警!我国中东部迎大范围降温 黑龙江等地降幅可达12℃
- 那年今日 | 一张漫画涨知识之11月29日
- 这辈子一定要去趟这个公园 在这里“有种爱叫放手”
