c 语言

本文探讨了C语言中的内联函数(static inline、extern inline)特性及其应用场景,同时介绍了static与extern关键字的区别。此外,还详细解释了malloc、realloc与calloc函数的功能及使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C语言

static、statac inline、extern inline 定义与用法

一 定义inline(内联函数)

1.引入内联函数的目的是为了解决程序中函数调用的效率问题。

2.内联函数可减少cpu的系统开销,并且程序的整体速度将加快,但当内联函数很大时,会有相反的作用,因此一般比较小的函数才使用内联函数。

3.有两种内联函数的声明方法,一种是在函数前使用inline关见字,另一种是在类的内部定义函数的代码,这样的函数将自动转换为内联函数,而且没必要将inline放在函数前面。

二 用法

1 static 静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的。换句话说,就算你其它文件里包含了同名同参数表的函数定义的话,也是不会引起函数重复定义的错误的.因为static是仅在当前文件可见。

2 static inline 可以把它认为是一个static的函数,加上了inline的属性,能且之内在当前文件内进行内联展开。static inline函数和static函数一样,其定义的范围是local的,即可以在程序内有多个不同的定义(只要不位于同一个文件内即可)。
而不加static的话,会使该函数被其他文件调用。

3 extern inline 表示该函数是已声明过的了,提示编译器遇到此变量或函数时,在其它模块中寻找其定义。在找到后将代码内联展开。

.h文件 .c文件

.h文件是头文件,内含函数声明、宏定义、结构体定义等内容。
.c文件是程序文件,内含函数实现,变量定义等内容。

malloc realloc calloc

三个函数的申明分别是:

void* realloc(void* ptr, unsigned newsize); 
void* malloc(unsigned size); 
void* calloc(size_t numElements, size_t sizeOfElement); 

都在stdlib.h函数库内
它们的返回值都是请求系统分配的地址,如果请求失败就返回NULL
malloc用于申请一段新的地址,参数size为需要内存空间的长度,如:

char* p; 
p=(char*)malloc(20);

calloc与malloc相似,参数sizeOfElement为申请地址的单位元素长度,numElements为元素个数,如:

char* p; 
p=(char*)calloc(20,sizeof(char)); 

realloc是给一个已经分配了地址的指针重新分配空间,参数ptr为原有的空间地址,newsize是重新申请的地址长度
如:

char* p; 
p=(char*)malloc(sizeof(char)*20); 
p=(char*)realloc(p,sizeof(char)*40);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值