问个小问题

suncs2001 2007-11-15 04:52:13



char* dest[10000]


能不能不通过循环给他初始化成一个比如空字符串.
...全文
70 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ppp_10001 2007-11-19
同意楼上

char dest[10000] = "";
足够
回复
suyouxin 2007-11-19
还有我试了下

C/C++ code
#include<iostream.h>
#include<stdio.h>
#include<string.h>
char* destTwo[5];


void main()
{

memset(destTwo,0,5);
cout<<destTwo[0]<<endl;

}




为什么会出现内存错误?

===============
声明了一个char*类型的数组,大小5个bytes
然后将其5个byte内容都初始化为0
输出时,destTwo[0]是一个指向0地址的指针,当然会出错

void main()
{

memset(destTwo,0,5);
// 将"dsdads"的首地址赋给destTwo的第一个变量
destTwo[0] = "dsdads";
cout<<destTwo[0]<<endl;

}


回复
ForestDB 2007-11-16
char *dest[10000] = { NULL };

char dest[10000] = "";
回复
kecp 2007-11-15
MSDN上都可以查得到的,我用中文大概说一下
void *memset( void *dest, int c, size_t count );
dest为要进行赋值的内存地址;
c为要设置的值;
count为要进行赋值的数量,以字节为单位。

至于你说的内存错误,应该是因为你那是指针数组,每个存放的实际是
4个字节大小的指针。试试meset(destTwo,NULL,5*4)看行不?
回复
ckt 2007-11-15

#include<stdio.h>
#include<string.h>

char* p = ""; // 指向空字符串的指针
char* destTwo[5] = {p};

// destTwo是指针数组,不是字符数组
void main()
{

}

回复
suncs2001 2007-11-15
还有我试了下

#include<iostream.h>
#include<stdio.h>
#include<string.h>
char* destTwo[5];


void main()
{

memset(destTwo,0,5);
cout<<destTwo[0]<<endl;

}


为什么会出现内存错误?
回复
suncs2001 2007-11-15
如果用memset(dest,0,10000)的话,那么每个位置上的数据是什么呢?

比如 if(dest[500]==0)么还是什么
回复
Wolf_FienD 2007-11-15
呵呵 错了 是

memset(dest, 0, 10000 );
回复
Wolf_FienD 2007-11-15
memset(dest, 0, 10000 * sizeof(char));
回复
xugang_2001 2007-11-15
memset(dest, 0, 1000);
或者
Zeromemory(dest, 1000);
回复
发动态
发帖子
新手乐园
创建于2007-09-28

3.2w+

社区成员

C/C++ 新手乐园
申请成为版主
社区公告
暂无公告