账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    C语言变参函数,可变参数是如何入栈的?
    47
    0
    viod func(const char *fmt, ...)
    {
        printf("%p", &fmt);
    }

    函数调用:

    func("test",1,2,3,4,5,6,7);

    这段代码我用GDB查看内存,发现fmt这个参数临近的内存都没有1、2、3、4、5、6、7这些数字出现。
    那么这些参数都去哪里了呢?程序是否单独分配了空间(栈外)存储这些值?如果是的话,该如何找到这个空间呢?

    使用gcc-9.1.0编译
    系统版本:CentOS Linux release 7.3.1611 (Core)

    =========================================================================================
    鉴于有人可能会推荐我使用stdarg.h里的va_listva_startva_argva_end宏。在此我先谢过。
    我的目的是写出一个不需要stdarg.h头文件的变参函数!

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部