问个小问题

suncs2001 2007-11-15 04:52:13



char* dest[10000]


能不能不通过循环给他初始化成一个比如空字符串.
...全文
112 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
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);

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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