网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

用代码实例解析C/C++多参数函数参数的计算顺序与压栈顺序-创新互联

这篇文章主要用代码实例解析C/C++多参数函数参数的计算顺序与压栈顺序,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。

创新互联建站是专业的都匀网站建设公司,都匀接单;提供网站设计、成都网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行都匀网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

一、前言

今天在看Thinking in C++这本书时,书中的一个例子引起了我的注意,具体是使用了下面这句

用代码实例解析C/C++多参数函数参数的计算顺序与压栈顺序

单看这条语句的语义会发现仅仅是使用一个简单的string的substr函数将所得子串push_back到strings。但是在阅读时我却对于substr的参数传递产生了疑惑,到底是先执行了++current,还是先执行了last-current?

经过查阅资料,发现了两个相关知识点----参数的计算顺序与压栈顺序。

二、参数压栈顺序

C/C++中规定了函数参数的压栈顺序是从右至左,对于含有不定参数的printf函数,其原型是printf(const char* format,…);其中format确定了printf的参数(通过format的%个数判断)。假设是从左至右压栈,那么先入栈的是format(这里我们简化理解为参数个数),然后依次入栈未知参数,此时想要知道参数个数,就必须找到format,而要找到format,就必须知道参数个数,陷入一个逻辑矛盾。因此C/C++中规定参数压栈为从右至左,这样对于不定参数,最后入栈的是参数个数,只需要取栈顶就可以得到。可以通过下面的程序验证:

#include 
void foo(int x, int y, int z)
{
    printf("x = %d at [%X]\n", x, &x);
    printf("y = %d at [%X]\n", y, &y);
    printf("z = %d at [%X]\n", z, &z);
}
int main(int argc, char *argv[])
{
    foo(100, 200, 300);
    return 0;
}

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


新闻标题:用代码实例解析C/C++多参数函数参数的计算顺序与压栈顺序-创新互联
链接地址:http://bjjierui.cn/article/ccogpc.html

其他资讯