在c++中怎么用memset() 给二维char型数组赋值 20

 我来答
北京瑞星信息技术股份有限公司
2016-02-25
北京瑞星信息技术股份有限公司
瑞星公司主营业务为信息安全整体解决方案的研发、销售及相关增值服务。公司自成立以来一直专注于信息安全领域,以优质的产品和专业的“安全+”服务,向政府、企业及个人提供各类安全服务,帮助所有用户。
向TA提问
展开全部
Memset一般都是按字节进行赋值,都是给字符型数组赋初值。给字符型数组赋值的知识及问题可以见百度百科:http://baike.baidu.com/view/982208.htm。我们主要讲解给非字符型数组如int的一维或二维数组初始化为0的操作。需要的头文件:<memory.h>or <string.h>
一维数组赋值0:

[cpp] view plain copy print?
int a[5];
memset(a,0,5*sizeof(int));
//// memset 是按字节进行赋值,一般对非字符型数组进行赋初值是不可取的 除了赋值0操作
或者写为memset(a, 0, sizeof(a)); sizeof(a) 就等于5*sizeof(int) = 20;
如果 是 int*p = new int[5]; 那么sizeof(p) 就等于4 == sizeof(int*) 包括double*,void* 或者类类型指针等的字节数都为4 (对于32位系统而言,64位系统则是8)
此外对于动态以为数组 int*a = new int[5]; memset(a, 0, sizeof(int)*5)也是可以的。
二维数组赋值0:

[cpp] view plain copy print?
int a[4][4];
cout << sizeof(a) << endl; // 对二维数组赋值0操作,对于动态二维数组不能这样处理
memset(a, 0, sizeof(a));

动态二维数组赋值0:

[cpp] view plain copy print?
long **F = new long*[height];
int i,j;
for(i = 0; i < height; i++)
{
F[i] = new long[allStates];
memset(F[i], 0, sizeof(long)*allStates); // 二维动态数组可以这样初始化
}
直接对于动态二维数组memset(F, 0, sizeof(long)*allStates*height);是不行的,因为动态二维数组申请的空间不一定是连续的,,F指向的空间不连续,这样赋值就会出错。
cooke1234
2014-01-27 · TA获得超过6861个赞
知道大有可为答主
回答量:4617
采纳率:72%
帮助的人:3598万
展开全部
char array[10][20];

给每个char数值清零:
方法一:memset(array, 0, sizeof(array)); //array不能是指针
方法二:for(int i=0; i<10; i++) memset(array[i], 0, 20);
更多追问追答
追问
我一开始也用的方法一,结果输出是大段空白
这是代码
int main()
{ char table[1000][15];memset(table,-1,sizeof(table));for(int i;i<1000;i++){cout<<endl;for(int j;j<1000;j++)cout<<table[i][j];}system("pause");return 0; }
追答
把for(int j; j<1000; j++)修改成
for(int j; j<15; j++)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-01-27
展开全部
刚刚没有注意到是二维
char buf[5][10];
memset(buf,0,sizeof(buf));
函数原型

void *memset(void *s, int ch, size_t n);
函数解释:将s中前n个字节 (typedef unsigned int size_t)用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
feng791161665
2015-09-29 · 超过28用户采纳过TA的回答
知道答主
回答量:89
采纳率:0%
帮助的人:31.2万
展开全部
char ch[5][5];
memset (ch[0],0,_countof(ch));
memset (ch[0],0,sizeof(ch));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lz12345zry
2015-11-08 · TA获得超过160个赞
知道小有建树答主
回答量:87
采纳率:100%
帮助的人:51.4万
展开全部
如果你定义的是
char data[55][2];
可以用
memset(data,0,sizeof(data));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式