博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用结构体指针前必须要用malloc,不然会出现段错误
阅读量:4080 次
发布时间:2019-05-25

本文共 846 字,大约阅读时间需要 2 分钟。

这也是自己写代码才发现的,在做华清4.2的课后作业时,所以真正自己去写去做题还是很重要的,就算你自己觉得自己看书看得再有感觉,自己以为都看懂了,还是得去写写。

现在也能明白为什么数据结构链表那里面都用malloc了,因为他们都用了结构体指针。

#include
#include
typedef struct student{ int number; char name;}stu,* stup;int main(){ FILE * fp; fp = fopen("1.txt","a"); stup s1,s2; stu s3; s1=(stup)malloc(sizeof(stu));//没有这个直接通过结构体指针访问结构体成员给结构体成员变量赋值会出现段错误。 //之前在链表数据结构那以为这样写只是因为更谨慎点,没想到是必须的!!! s2=(stup)malloc(sizeof(stu)); s1->number = 1; s1->name = 'm'; s2->number = 2; s2->name = 'x'; s3.number = 3;//不用结构体指针的方式访问结构体成员并赋值就不会报错 printf("%d %c %d %c\n",s1->number,s1->name,s2->number,s2->name); fwrite(s1,sizeof(stu),1,fp); fwrite(s2,sizeof(stu),1,fp);}

 

如果没有malloc直接通过结构体指针访问结构体成员并赋值就会报段错误

 华清的老师讲课时没有用结构体指针所以没有malloc也不会报错

 我也发现别人发现了这个问题。

 

这是我之前4月6号刚开始看数据结构时问的问题,现在回看可以认为这个老师的回答并不完全正确,用结构体指针时是必须要加malloc 。

转载地址:http://uwoni.baihongyu.com/

你可能感兴趣的文章
字节跳动后端开发一面
查看>>
CentOS Tensorflow 基础环境配置
查看>>
FTP的命令
查看>>
CentOS操作系统下安装yum的方法
查看>>
ping 报name or service not known
查看>>
FTP 常见问题
查看>>
zookeeper单机集群安装
查看>>
do_generic_file_read()函数
查看>>
Python学习笔记之数据类型
查看>>
Python学习笔记之特点
查看>>
shell 快捷键
查看>>
VIM滚屏操作
查看>>
EMC 2014存储布局及十大新技术要点
查看>>
linux内核内存管理(zone_dma zone_normal zone_highmem)
查看>>
将file文件内容转成字符串
查看>>
循环队列---数据结构和算法
查看>>
优先级队列-数据结构和算法
查看>>
servlet中请求转发(forword)与重定向(sendredirect)的区别
查看>>
Spring4的IoC和DI的区别
查看>>
springcloud 的eureka服务注册demo
查看>>