static函数与普通函数的区别
时间: 2024-06-04 11:10:36 浏览: 10
1. 范围:static函数只能在当前文件中使用,而普通函数可以在其他文件中使用。
2. 存储位置:static函数存储在静态数据区中,而普通函数存储在代码段中。
3. 生命周期:static函数在程序运行期间只被初始化一次,而普通函数每次调用都会被初始化。
4. 可见性:static函数只在当前文件中可见,不会污染全局命名空间,而普通函数会污染全局命名空间。
5. 调用方式:static函数只能通过函数名直接调用,而普通函数可以通过指针或函数名调用。
6. 作用:static函数主要用于限制函数的作用域,避免与其他文件中的函数发生命名冲突,而普通函数则没有限制。
相关问题
static函数与普通函数有什么区别
static函数和普通函数的主要区别在于它们的作用域和生命周期。
1. 作用域:static函数的作用域仅限于定义它的源文件中,而普通函数的作用域则是整个程序。
2. 生命周期:普通函数在程序启动时就被加载到内存中,并在程序运行期间一直存在,而 static函数只有在第一次被调用时才被加载到内存中,并在程序运行期间一直存在。
另外,static函数还有以下特点:
1. 只能在定义它的源文件中被调用,不能被其他文件调用。
2. 与普通函数相比,static函数的开销更小,因为它不需要在全局符号表中进行查找。
3. static函数可以用来实现模块化编程,将一个大函数拆分成多个小函数,只暴露需要供其他函数调用的函数,从而减少程序的耦合度。
5、Static全局变量与普通全局变量的区别;Static局部变量与普通局部变量的区别;static函数与普通函数区别; C++ 类中static成员与非static成员变量区别。(10 分)
1. Static全局变量与普通全局变量的区别:
- 静态全局变量的作用域仅限于定义该变量的源文件内,也就是说,在同一源程序的其他源文件中不能使用它;
- 普通全局变量则可以被同一程序中的所有源文件共享。
2. Static局部变量与普通局部变量的区别:
- 静态局部变量在程序执行过程中只被创建一次,不会随着函数的退出而被销毁,仍然保存在内存中,下次调用函数时可以继续使用;
- 普通局部变量在每次函数调用时都会被重新创建,函数退出时会被销毁。
3. Static函数与普通函数区别:
- 静态函数只能在当前文件中使用,其他文件无法调用该函数;
- 普通函数可以被其他文件调用。
4. C++ 类中static成员与非static成员变量区别:
- 非static成员变量属于对象级别,每个类对象都有一份,不同对象的该变量值可以不同;
- static成员变量属于类级别,所有类对象共享一份,无论创建多少个类对象,该变量只有一份。而且,static成员变量必须在类外初始化,因为它不属于任何一个对象。
总的来说,static修饰的变量和函数都具有“静态”的特性,这种特性使得它们在内存中只有一份拷贝,可以被多次调用或共享使用。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)