一些零碎知识

文章讲述了内联函数在C++中的使用,强调其可以减少函数调用开销以提高执行效率,但需注意函数体大小限制和代码膨胀问题。同时提到了栈、堆、全局区和字符串常量区的内存管理。
摘要由CSDN通过智能技术生成

        字符的比较其实是比较它们的ASCⅡ码值,在ASCⅡ码表中,小写字母字符

‘a'~’z’是连续的,其ASCⅡ码值是逐渐增1,故判断c1是否为小写字母,应判断c1是否大

于或等于字符’a’,并且小于或等于字符’z’。

        

        数组下标的下限是 0 。

        

        当只有一个地方调用了内联函数时,编译器会在调用处将内联函数展开,这样就少了函数的跳转指令,栈的扩展指令,因此可能减小文件的大小。

        可以把内联函数作为一般的函数一样调用,但是由于内联函数在需要的时候,会像宏一样展开,所以执行速度确比一般函数的执行速度要快。当然,内联函数也有一定的局限性。就是函数中的执行代码不能太多了,如果,内联函数的函数体过大,一般的编译器会放弃内联方式,而采用普通的方式调用函数。(换句话说就是,你使用内联函数,只不过是向编译器提出一个申请,编译器可以拒绝你的申请)这样,内联函数就和普通函数执行效率一样了。

        内联函数是一种特殊的函数,它的代码在编译时会被直接嵌入到调用该函数的地方,而不是在运行时通过函数调用的方式执行。这种方式可以减少函数调用的开销,提高程序的执行效率。通常情况下,内联函数适用于代码量较小、频繁调用、性能要求较高的函数。在C++中,可以使用inline关键字来声明一个内联函数。值得注意的是,内联函数的使用需要权衡代码大小和性能,因为过多的内联函数会增加代码的大小,从而影响程序的性能。

        如果我们在程序中频繁调用该函数,每次调用都需要进行函数调用、参数传递、返回值处理等操作,这些操作会带来一定的开销。为了减少这种开销,我们可以将该函数声明为内联函数,让编译器将其代码直接嵌入到调用该函数的地方。

        这样,在程序中调用该函数时,编译器会直接将其代码复制到调用该函数的地方,从而避免了函数调用的开销。需要注意的是,内联函数的使用需要根据具体情况进行权衡,过多的内联函数会增加代码的大小,从而影响程序的性能。

        内联函数是为了替代c++中类不能使用宏函数的遗憾。

        宏函数没有作用域的限制不能在类中使用,但是宏函数,空间换时间,没有出入栈的开销。为了弥补不能使用,产生了内联函数,inline向编译器提出一个建议,建议将某个函数声明为内联函数。内联函数不能有过多判断语句,不能有循环,不能有取址操作。

        使用内联函数,空间换时间  ,能加速代码的执行,代价是 代码量增加。

程序段                                        作用

1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。

2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由os回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。

3、全局区(静态区)(static)—全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。

4、字符串常量区 —常量字符串就是放在这里的。 程序结束后由系统释放。

5、程序代码区—存放函数体的二进制代码。

        静态变量和全局变量统一储存在一块空间中,其中已经定义的一块,未定义的一块,由系统自动释放,静态变量不是放在栈区和堆区的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值