C语言中关于一个清空数组函数的编写问题

鯎鯎 2010-11-09 09:57:26
网上写可以通过利用memset()可以对数组进行清空,如:
char str[100];
memset(str,'\0',sizeof(str));
这样的确可以对str数组的清空,但本人想自己写一个函数,一方面是为了方便使用,另外因为定义的数组数量、长度不定,我不可能写定地对数组进行清空,再加上想减少传入的参数,所以本人想写一个函数来对数组进行清空;下面是我本人的想法,但试过不行,所以想各位帮帮忙!
bool ClearArr(数组变量)
{
memset(数组变量,'\0',sizeof(数组变量));
}
其中数组变量的长度是不定的,可以是str[100],也可能是str[50],因为C、C++不像JAVA有一个总的父类(Object),如果在JAVA中,可以写成bool ClearArr(Object obj),但本人不是在用JAVA,而是在用C,那要怎么写才能达到我想要的结果呢??求大虾帮忙!!
...全文
752 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
booksoon 2010-11-09
  • 打赏
  • 举报
回复
数组的长度不能少啊
walkersfaint 2010-11-09
  • 打赏
  • 举报
回复
这个写了跟不写,有区别吗?楼主

纯属多此一举
xiangchendub 2010-11-09
  • 打赏
  • 举报
回复
封装干啥呢? 把字节数算好传给第3个参数就可以了。
ericming200409 2010-11-09
  • 打赏
  • 举报
回复
确实没什么必要,如果一定要封装,至少得传两个参数进去,一个是数组名,一个是数组长度
icekingson 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 luciferisnotsatan 的回复:]
引用 1 楼 hqin6 的回复:

bool ClearArr(数组变量,数组变量大小)
{
memset(数组变量,'\0',数组变量大小);
}


正解。
数组变量当参数时,就是一个指针,sizeof就是4。需要自己把大小传进去
[/Quote]

数组变量在当作参数的时候,数组会退化成指针的。
Csuxiaowu 2010-11-09
  • 打赏
  • 举报
回复
何必封装呢?memset一下就搞定了 没必要嘛
Metrosexual 2010-11-09
  • 打赏
  • 举报
回复
自己写也不麻烦啊,没必要封装吧
  • 打赏
  • 举报
回复
你传个size参数进入函数就好了嘛。
此外,这个东西封装,是有点多此一举吧。memset也就一句话。
luciferisnotsatan 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hqin6 的回复:]

bool ClearArr(数组变量,数组变量大小)
{
memset(数组变量,'\0',数组变量大小);
}
[/Quote]

正解。
数组变量当参数时,就是一个指针,sizeof就是4。需要自己把大小传进去
太乙 2010-11-09
  • 打赏
  • 举报
回复
bool ClearArr(数组变量,数组变量大小)
{
memset(数组变量,'\0',数组变量大小);
}
xuwening 2010-11-09
  • 打赏
  • 举报
回复
写错了~~~~

void clearObject(TObject *pObj)
{
memset(pObj->arr ...);
memset(pObj->val ...);
//...
}
xuwening 2010-11-09
  • 打赏
  • 举报
回复
楼主的思想应该转换一下:

不要对细小的东西封装,从大局考虑问题可能更好。

例如:

typedef struct tag_object
{
char arr[];
int val[];
//...
}TObject;

void clearObject(TObject *pObj)
{
memset(arr ...);
memset(val ...);
//...
}


鯎鯎 2010-11-09
  • 打赏
  • 举报
回复
以为能有一个变量的方法,如果要两个变量,确实没必要封装

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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