自己写一个函数怎么返回

xiaogui32 2010-07-11 10:02:19
比如我一个函数是MyGetUserName,然后外面要这样调用

TCHAR UserName[256];
MyGetUserName(&UserName);//这样就把当前系统的用户名给放到UserName里面了
然后messagebox....
请问这个MyGetUserName要怎么写。
...全文
159 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaogui32 2010-07-16
  • 打赏
  • 举报
回复
按照地址传直不可以吗?代码要怎么写
xiaogui32 2010-07-15
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wltg2001 的回复:]
BOOL MyGetUserName(LPTSTR UserName)
{
ZeroMemory(UserName,sizeof(UserName)/sizeof(TCHAR));
DWORD size = sizeof(UserName)/sizeof(TCHAR);
GetUserName(UserName,&size);
}
==========
你这个没……
[/Quote]
不行哦。
kindsjay 2010-07-13
  • 打赏
  • 举报
回复
可以参考 书本函数章节
BlueMap 2010-07-12
  • 打赏
  • 举报
回复
看自己的编程规范了,我一般返回一个int 一般情况下成功则返回值大于0失败则返回值小于0,在vs2005以上很多的函数返回值都是hresult类型(实际上是int)。
jastdoit 2010-07-12
  • 打赏
  • 举报
回复
路过,学习中~~~~
panpengpeng 2010-07-12
  • 打赏
  • 举报
回复
来迟了,已经有人给正确答案了
你函数传引用,如果仅仅是为了楼主的要求则不需要返回值,如果要判断是否成功则可以返回bool,在函数体内用return返回

VOID MyGetUserName(LPTSTR UserName)
{
}////抄2楼的,呵呵
疯癫小程序 2010-07-12
  • 打赏
  • 举报
回复
可以返回bool值来判断是否成功,当然你如果在函数内部就判断了,并且发出了MessageBox,那你就可以返回void。
lazy_2010 2010-07-12
  • 打赏
  • 举报
回复
函数申明,应当指定输入 buffer 的长度,#14 忽略了吧。

建议写成
int MyGetUserName(LPTSTR UserName, int nBufSize);
wltg2001 2010-07-11
  • 打赏
  • 举报
回复
BOOL MyGetUserName(LPTSTR UserName)
{
ZeroMemory(UserName,sizeof(UserName)/sizeof(TCHAR));
DWORD size = sizeof(UserName)/sizeof(TCHAR);
GetUserName(UserName,&size);
}
==========
你这个没有返回啊,最后一句改成:return GetUserName(UserName,&size);
nongchao2011 2010-07-11
  • 打赏
  • 举报
回复
写个返回值是空类型的viod
yuhuaijun 2010-07-11
  • 打赏
  • 举报
回复
MyGetUserName(&UserName); 将&号去, 数组名作为实参, 传入就是地址, 即数组的首地址
xiaogui32 2010-07-11
  • 打赏
  • 举报
回复

BOOL MyGetUserName(LPTSTR UserName)
{
ZeroMemory(UserName,sizeof(UserName)/sizeof(TCHAR));
DWORD size = sizeof(UserName)/sizeof(TCHAR);
GetUserName(UserName,&size);
}
case IDC_DEL:
{
TCHAR UserName[256];
MyGetUserName(&UserName);
MessageBox(hDlg,UserName,NULL,MB_OK);
break;
}

这个错误了。怎么写。。
老庄_186 2010-07-11
  • 打赏
  • 举报
回复
路过,学习中。。。
Yanger_xy 2010-07-11
  • 打赏
  • 举报
回复
MyGetUserName(&UserName);//这样就把当前系统的用户名给放到UserName里面了

这个函数传入的参数是以引用的方式传递的.通过参数就可以获得想要的值.
可以返回bool或者int来表示是否调用成功
Eleven 2010-07-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 oyljerry 的回复:]
返回bool等来告诉调用者函数是否成功...
[/Quote]
这样就可以了。。。
dong364 2010-07-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 xiaogui32 的回复:]
比如我一个函数是MyGetUserName,然后外面要这样调用

C/C++ code

TCHAR UserName[256];
MyGetUserName(&UserName);//这样就把当前系统的用户名给放到UserName里面了
然后messagebox....
请问这个MyGetUserName要怎么写。
[/Quote]

应该MyGetUserName(UserName);//这样就把当前系统的用户名给放到UserName里面了
然后返回void或BOOL
mxdzhangyang 2010-07-11
  • 打赏
  • 举报
回复
参数的传递有2种一种是引用传递 。一种是值传递。关于返回值的问题。跟这个也有关系 引用传递时操作的是指针。所以等于操作了那块内存 。所以是直接写在那块内存的。如果是值传递不是全局变量的。比如说局部变量出了某个{}后就失效了 。。你的那个是个引用传递。。返回值随你定义的函数返回值就可以了。或者不返回值。比如VOID类型 。。
china_bai 2010-07-11
  • 打赏
  • 举报
回复
BOOL MyGetUserName(LPTSTR UserName)
{
if(...)//get user name
{
usename == ...;
return true;
}

username = "";
return false;
}
jingzhongrong 2010-07-11
  • 打赏
  • 举报
回复
获得系统当前用户名可以使用GetUserName或者GetUserNameEx函数。

函数可以这样写:
BOOL MyGetUserName(TCHAR* username)
{
return GetUserName(username,256);
}
调用:
TCHAR UserName[256];
BOOL bRet = MyGetUserName(UserName);
oyljerry 2010-07-11
  • 打赏
  • 举报
回复
返回bool等来告诉调用者函数是否成功...
加载更多回复(2)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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