版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
C语言笔记(九阳神功)
宗旨:技术的学习是有限的,分享的精神是无限的。
1.static的作用:
(1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区)。
--static局部变量只初始化一次,下一次依据上一次的结果值
(2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
--static全局变量只初始化一次,防止在其他文件单元被引用
(3)在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
--static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
2.引用与指针有什么区别
(1) 引用必须被初始化,指针不必。
(2) 引用初始化以后不能被改变,指针可以改变所指的对象。
(3) 不存在指向空值的引用,但是存在指向空值的指针。
3.描述实时系统的基本特性
——在特定时间内完成特定的任务,实时性与可靠性
4.全局变量和局部变量的区别:
全局变量储存在静态区,进入main函数之前就被创建,生命周期为整个源程序;局部变量在堆栈(动态分配的在堆上),在函数被调用时才创建,生命周期为函数内。
5.什么是平衡二叉树:
左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于1。
6.堆栈溢出一般是由什么原因造成的:
(1)没有回收垃圾资源:存储空间垃圾太多 内存已满
(2)层次太深的递归调用:重复调用自己导致内存不足
7.常用排序的时间及空间复杂度

排序法
最差时间分析
平均时间复杂度
稳定度
空间复杂度
冒泡排序
O(n2)
O(n2)
稳定
O(1)
快速排序
O(n2)
O(n*log2n)
不稳定
O(log2n)~O(n)
选择排序
O(n2)
O(n2)
稳定
O(1)
二叉树排序
O(n2)
O(n*log2n)
不一顶
O(n)
插入排序
O(n2)
O(n2)
稳定
O(1)
堆排序
O(n*log2n)
O(n*log2n)
不稳定
O(1)
希尔排序
O
O
不稳定
O(1)

二者不可兼得:以时间换空间,以空间换时间(想节省空间就要耗费时间,想节省时间必要耗费空间)
8.各类型与零值的比较
写出floatx 与零值比较的if语句:if(x > 0.000001 && x