C++复习基础1
2016-03-08 13:54
337 查看
1. 全局变量VS静态全局变量
储存方式上:全局变量是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。
两者区别:这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域,
即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。
2. 静态函数
定义:在函数前加static即可
作用:使某个函数只在一个源文件中有效,不能被其他源文件所用。
效果:(1)它允其他源文件建立并使用同名的函数,而不相互冲突。 (2)
声明为静态的函数不能被其他源文件所调用,因为它的名字不能得到。
3. 堆与栈的区别:
1)堆栈空间分配区别:
1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;(注:静态变量是不入栈的)
2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
eg:char p;
p = (char *)malloc(sizeof(char));
但是,p本身是在栈中。
2) 堆栈数据结构的区别:
堆(数据结构):堆可以被看成是一棵树,如:堆排序;
栈(数据结构):一种先进后出的数据结构。
储存方式上:全局变量是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。
两者区别:这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域,
即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。
2. 静态函数
定义:在函数前加static即可
作用:使某个函数只在一个源文件中有效,不能被其他源文件所用。
效果:(1)它允其他源文件建立并使用同名的函数,而不相互冲突。 (2)
声明为静态的函数不能被其他源文件所调用,因为它的名字不能得到。
3. 堆与栈的区别:
1)堆栈空间分配区别:
1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;(注:静态变量是不入栈的)
2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
eg:char p;
p = (char *)malloc(sizeof(char));
但是,p本身是在栈中。
2) 堆栈数据结构的区别:
堆(数据结构):堆可以被看成是一棵树,如:堆排序;
栈(数据结构):一种先进后出的数据结构。
相关文章推荐
- C++函数重定义、重载、重写
- 字符串的组合
- C语言中的整数(short,int,long)
- C++看人家的代码
- [C语言][LeetCode][83]Remove Duplicates from Sorted List
- C++ 中类之间通过指针访问
- new 、delete和malloc、free的解析及区别
- [C语言][LeetCode][328]Odd Even Linked List
- C++函数重载与缺省参数的宏观理解
- signal 在C++中错误提示 argument of type
- 大话C语言变量和数据类型
- C++类的自动转换和强制转换详解和实现
- c语言结构体数组的应用问题
- C++无法解析的外部符号
- 迷宫问题Maze (BFS) 广度优先遍历 C语言
- 对C++ 中Enum & Macro &Const 的理解
- C++项目参考解答:求Fibonacci数列
- c++ MFC 可改变时区的模拟时钟
- C++ lambda表达式
- C++中各大有名的科学计算库