如题
结构体
typedef struct{
int id;
char name[8];
char *cc;
}record;
//初始化结构体分配内存
record * test=(record *)malloc(sizeof(record)*1);
//下面需要初始化 结构体成员 指针cc吗?
//初始化成员 cc 分配内存
(*(test) ).cc =(char *)malloc(sizeof(char)*20);
//结构体成员赋值
(*(test) ).id = 11;
strcpy((*(test)).name,"abc");
strcpy((*(test)).cc,"test");
//这里成员cc 已经赋值 并且打印成员值正常
//printf("%s\n",(*(test)).cc);
我的疑问是 ,这个cc成员单独使用是没有问题的,
在使用结构体的时候是不正常 ,
例如:将结构体写入到文件
write(fd,test,sizeof(record1)*1);
//写入后去看文件 其他的值都是正常 , 而结构体成员cc那个位置的数据是 乱码
//写入后的二进制文件内容
/* 0B 00 00 00 61 62 63 00 00 00 00 00 00 00 00 00 C0 A2 2C 01 00 00 00 00 00 00 00 00 00 00 00 00 */
//0B 是结构体成员id的值11, 结构体成员name的值是 61 62 63 即abc,
//成员cc 这里的值 不对 而且每运行一次程序 对应位置的数据是变化的
//回到c程序 用结构体去读这个文件 结果也是读不出数据
//其他值正常 , 指针成员cc %p打印显示是 指针 %s没有显示 空的, sizeof 显示8大小
//现在的疑问是 结构体里 成员是指针时 这个结构体要怎样用呢? 结构体成员指针有什么作用和功能?
//自学c语言 刚接触结构体 ,这里不太明白 希望大神们讲解下 .谢谢