va_arg 读不到最后一个参数

machuanfei_c machuanfei_c 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#include <stdio.h>
#include <stdarg.h>
void execProcedurce( /*int cnt, */const char* procedurceName,...)
{
va_list argptr;
va_start( argptr, procedurceName );

while (true)
{
procedurceName = va_arg( argptr, const char* );
if ( procedurceName == NULL)
{
break;
}
procedurceName = NULL;
}
va_end( argptr );
}

int main()
{
execProcedurce("hello", "a");
return 0;
}


为什么找不到结束的位置, 读到下一个参数指向的地址信息变成 <读取字符串的字符时出错。>
...全文

相关推荐

va_list(),va_start(),va_arg(),va_end() 详细解析

(一)写一个简单的可变参数的C函数 下面我们来探讨如何写一个简单的可变参数的C函数.写可变参数的C函数要在程序中用到以下这些宏: 代码如下:void va_start( va_list arg_ptr, prev_param );type va_arg( va_list arg_ptr, type );void va_end( va_list arg_ptr );va在这里是variable-argument(可变参数)的意思.这些宏定义在stdarg.h中,所以用到可变参数的程序应该包含这个头文件.下面我们写一个简单的可变参数的函数,该函数至少有一个整数参数,第二个参数也是整数,是可选的.函

weixin_38506835

关于C/C++中可变参数的详细介绍(va_list,va_start,va_arg,va_end)

可变参数的函数原理其实很简单,而va系列是以宏定义来定义的,实现跟堆栈相关.我们写一个可变函数的C函数时,有利也有弊,所以在不必要的场合,我们无需用到可变参数。如果在C++里,我们应该利用C++的多态性来实现可变参数的功能,尽量避免用C语言的方式来实现

weixin_38711008

va_start、va_end、va_list的详细使用方法

va_start、va_end、va_list的详细使用方法,对想了解的人很有帮助。

mokelan

stdarg.h中三个宏va_start ,va_arg和va_end的应用

1)首先在函数里定义一个va_list型的变量,这里是arg_ptr,这个变 量是指向参数的指针. 2)然后用va_start宏初始化变量arg_ptr,这个宏的第二个参数是第 一个可变参数的前一个参数,是一个固定的参数. 3)然后用va_arg返回可变的参数,并赋值给整数j. va_arg的第二个 参数是你要返回的参数的类型,这里是int型. 4)最后用va_end宏结束可变参数的获取.然后你就可以在函数里使

zjuzly

va-list原理解释

va_list原理解释,解释了关于VA_LIST的用法、VA_LIST在编译器中的处理、VA_LIST应该注意的问题、以及相关程序

仲漫
评论 5
收藏 已收藏
分享
返回顶部
machuanfei_c
C++ 语言 65,214 成员 250,514 内容