c++动态参数函数中使用引用问题

lengguangyao 2016-04-09 07:58:29
void fun(char* ftm, ...)
{
int temp = 10;
va_list va;
char* s1 = va_start(va,ftm);
// 怎样为引用赋值?
char outNum[_INTSIZEOF(int)];
sprintf_s(outNum, "%d", 10);
memcpy((char*)va, outNum, _INTSIZEOF(int));
//*((int *)((va += _INTSIZEOF(int)) - _INTSIZEOF(int))) = temp;
va_end(va);
}
void main()
{
int iNum = 0;
fun("", &iNum);
// 希望打印出10
printf("%d\n", iNum);
}
...全文
559 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2016-05-14
  • 打赏
  • 举报
回复
哦: 试验了一下,结论是。 引用不能按照引用传递给 C式的 可变参数表。 因为 此时不知道参数是否引用类型, 按照习惯,引用类型的参数会解析为,值类型参数传递。 引用此时解析为他引用的对象的值。 原因是:C 语言中所有参数都按照值传递。 C式的 可变参数表,基于兼容C的原因, 并且不能分辨出,形参是引用, 于是也就对所有参数按照值传递 引用的值,就是被他引用的对象的值。
lengguangyao 2016-05-13
  • 打赏
  • 举报
回复
结贴不会?,菜鸟
赵4老师 2016-05-03
  • 打赏
  • 举报
回复
电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
lm_whales 2016-05-03
  • 打赏
  • 举报
回复
引用参数。。。当成指针好了 只是不能确定一定是可以的,因为标准没规定引用如何实现
小灸舞 2016-04-09
  • 打赏
  • 举报
回复
帮结贴
lengguangyao 2016-04-09
  • 打赏
  • 举报
回复
自己搞定了,既然参数是地址,那么改变地址的存的内容就好了!
lengguangyao 2016-04-09
  • 打赏
  • 举报
回复
void fun(char* ftm, ...) { int temp = 10; va_list va; va_start(va,ftm); /////////////////////////////// int *p = va_arg(va,int*); *p=temp; //////////////////////////// va_end(va); } void main() { int iNum = 0; fun("", &iNum); // 成功打印出10 printf("%d\n", iNum); }
lengguangyao 2016-04-09
  • 打赏
  • 举报
回复
能利用va_arg得到需要的参数值,但是要怎样才能改变他呢?

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧