请问c语言double型的数组,能用memset初始化吗?

revenant227 2011-12-14 08:50:48
或者用什么比较方便的方法
...全文
1490 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wizard_tiger 2011-12-15
  • 打赏
  • 举报
回复
一楼正解!
碎炎 2011-12-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 revenant227 的回复:]

是不是所有变量中,只有字符串变量和指针本身的值就是内存地址,而其他的变量或者常量都是指到某快内存里的?
[/Quote]

一般的局部变量都是在栈上分配的 然后栈上可以定义个指针来指向堆 可以说给一个内存块一个标示符直接引用那块内存块 c风格字符串本身就是一个指针,memset的含义是讲由起始地址的连续size个字节设为0x00 ,你要设那块内存就必须得传入那块的起始地址,结构也一样,给memset一个struct的首地址
revenant227 2011-12-14
  • 打赏
  • 举报
回复
是不是所有变量中,只有字符串变量和指针本身的值就是内存地址,而其他的变量或者常量都是指到某快内存里的?
elegant87 2011-12-14
  • 打赏
  • 举报
回复
memset是初始化统一值的

如果不一样,需要一个循环进行操作
revenant227 2011-12-14
  • 打赏
  • 举报
回复
其实我知道char s[10];
memset(s,0,sizeof(s));
这样是对的。
我是想知道,为什么含有字符串的结构体要在memset时加入&,
例如memset(&struct,0,sizeof(struct));
c的结构体和字符串变量都是怎么管理的?
柯本 2011-12-14
  • 打赏
  • 举报
回复
memset(&char,0,sizeof(char));
要看你具体的定义
如果是char *类型的字串,是不可以的
如:char *s="11111!";
memset(s,0,sizeof(s));
s指向的是常量字串,它是不可写的
且,sizeof(s)为指针长度,它在32位下永远为4字节
char s[10];
memset(s,0,sizeof(s));
就可以了
revenant227 2011-12-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 keiy 的回复:]
全部初始化为0,用memset可以,但某一特定值,只能用循环了
[/Quote]

那进一步请问,
memset(&struct,0,sizeof(struct));和memset(&char,0,sizeof(char));
为什么第二个会报错?struct是包含了字符串的结构体。char是字符串。
cbzjzsb123 2011-12-14
  • 打赏
  • 举报
回复
楼上正解
柯本 2011-12-14
  • 打赏
  • 举报
回复
全部初始化为0,用memset可以,但某一特定值,只能用循环了

33,317

社区成员

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

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