qq_41870875 2021-05-07 11:06 采纳率: 100%
浏览 129
已采纳

c语言结构体成员是指针时 怎样去使用结构体?

如题
结构体
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语言 刚接触结构体 ,这里不太明白  希望大神们讲解下 .谢谢
 

 

  • 写回答

2条回答

      报告相同问题?

      相关推荐 更多相似问题

      悬赏问题

      • ¥20 苹果app名字侵权商标,我投诉了,但是苹果一直没回怎么办
      • ¥15 Android studio运行不成功总是报错
      • ¥15 pycharm 加载软件包列表时出错connect timed out
      • ¥15 和您碰到了同一个问题
      • ¥15 如何在微信支付V3PHP版请求中添加header?
      • ¥15 在数字信号处理中用MATLAB显示波形。
      • ¥15 keil MDK软件进行仿真调试的局限
      • ¥15 关于gateway产生临时文件夹的问题
      • ¥15 Java Broken Pipe以及OOM
      • ¥20 请问有没有RTL8211FS的参考原理图