LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1470|回复: 6

带char *的结构体如何赋初值?

[复制链接]
发表于 2005-8-5 16:33:49 | 显示全部楼层 |阅读模式
typedef struct{
    int len;
    char *data;
}DATA;

DATA data;

如何给data赋初值?显然memset(&data, 0, sizeof(DATA));不行
发表于 2005-8-5 17:39:24 | 显示全部楼层
什么意思?
怎么没看懂?
有什么特别的吗
回复 支持 反对

使用道具 举报

发表于 2005-8-5 17:52:12 | 显示全部楼层
Post by macarthor
typedef struct{
    int len;
    char *data;
}DATA;

DATA data;

如何给data赋初值?显然memset(&data, 0, sizeof(DATA));不行


可以,就这样。
回复 支持 反对

使用道具 举报

发表于 2005-8-5 20:55:44 | 显示全部楼层
以下都是个人理解:
memset(&data, 0, sizeof(DATA));  会把data.data的值置零,就是让它不指向任何数据,
char cc;
data.data=&cc;        //赋值
回复 支持 反对

使用道具 举报

发表于 2005-8-6 00:53:28 | 显示全部楼层
呵呵,最后这个char *是用来指向len后面的数据区的
比如你从网络上接收到1000个字节,存放在buff里,buff是一个char[]

然后定义一个DATA *data = buff;
然后就可以用data->len得到整个数据包的长度,而data->data就是后面的数据
回复 支持 反对

使用道具 举报

发表于 2005-8-10 21:48:59 | 显示全部楼层
char buf[1024]={0};
DATA data = {
       .len = 100,
       .data=buf
};
回复 支持 反对

使用道具 举报

发表于 2005-8-12 16:46:45 | 显示全部楼层
Post by macarthor
typedef struct{
    int len;
    char *data;
}DATA;

DATA data;

如何给data赋初值?显然memset(&data, 0, sizeof(DATA));不行

为什么要给data赋初值呢?对他的成员完成初始化不就行了么?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表