C语言进阶篇之函数&内存分布
Posted 小幸运bz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言进阶篇之函数&内存分布相关的知识,希望对你有一定的参考价值。
static可以限定函数的作用域:只能被本文件中的其他函数调用,而不能被同一程序其他文件中的函数调用。
a) extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模板中寻找其定义;
b) extern “C”的含义:在C++出现以前,很多代码都是C语言写的,而且很多底层的库也是C语言写的,为了更好的支持原来的C代码和已经写好的C语言库,需要在C++中尽可能的支持C,而extern "C"就是其中的一个策略。为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言语法进行编译。
b) inline函数同宏定义一样,可以解决一些频繁调用的小函数大量消耗栈内存的问题,但同时inline是一个函数,调用函数时,编译器会检查参数类型,消除宏定义的隐患。
内联函数太复杂或者调用点太多,展开后导致代码膨胀带来的恶化可能大于效率提升带来的益处。
内联函数一定要在头文件中定义,否则编译器会忽略内联函数的定义。
1)
BSS段:存放程序中
未初始化的全局变量,不占用执行程序大小,其内容由操作系统初始化(
清零)。
3)代码段:存放程序执行代码的内存区域,大小在程序运行前已经确定,并且通常属于
只读
。
4)堆:存放进程运行中被
动态分配
的内存段,大小并不固定,可动态扩张或缩减。malloc分配的为此地址。
5)栈:用户存放程序临时创建的
局部变量
(但不包括static声明的变量)。在函数被调用时,其参数也会被压入发起调用的进程栈。
int *p=(int*)malloc(100);
以上是关于C语言进阶篇之函数&内存分布的主要内容,如果未能解决你的问题,请参考以下文章
C语言进阶学习笔记三字符串函数+内存函数详解
C语言进阶动态内存管理
C语言进阶:字符串和内存函数
C语言进阶字符串与内存函数memcpymemmovestrcmpstrstr实现
C语言进阶—— 字符操作函数+内存操作函数详解 (吐血爆肝 !!!)
⭐️欢度国庆-共约C语言进阶⭐️ 动态内存管理+柔性数组 建议收藏