link

问题:定义结构体指针时,有没有同时分配存储空间啊?看到结构体的数组定义好以后就直接可以用了。但是结构体指针在链表中还要malloc()申请空间。这是为什么啊?
答案:定义结构体指针时并没有分配存储空间,所以要用malloc()申请空间。
//下面仅仅是定义一个类型,不会产生变量,所以不存在分配空间的问题
struct data
{int i;int j;
};void main(void)
{struct data dat1; //定义一个struct data类型的变量,和int i同理。printf("%d\n", sizeof(struct data)); //8个字节printf("%d\n", sizeof(dat1));        //8个字节struct data* pdat1;//定义一个struct data类型的指针,和int *pi 同理。printf("%d\n", sizeof(pdat1));        //4个字节,就是一个指针的空间,pdat1并没有结构体变量的信息。pdat1 = (struct data*)malloc(sizeof(struct data)); //申请一个空间,把该空间地址给pdat1.printf("%d\n", sizeof(*pdat1));      //8个字节struct data dats1[2]; printf("%d\n", sizeof(dats1));     //16个字节,两个data变量,不是data指针。dats1[0].i = 20;  //可以直接使用数组里面的结构体变量dats1[0].j = 30;struct data* dats2[2]; //指针数组,包含两个指针,而不是结构体变量printf("%d\n", sizeof(dats2));  //8个字节,两个指针的大小dats2[0]->i = 20; //错误!还没有给dats2[0] 指针分配空间dats2[0]->i = 20; //错误!还没有给dats2[0] 指针分配空间dats2[0] = (struct data*)malloc(sizeof(struct data)); //分配空间dats2[0]->i = 20; //okdats2[0]->i = 20; //ok
}

定义一个结构体指针需要分配存储空间相关推荐

  1. 定义一个结构体指针需要分配存储空间?

    前言 问题的来源于在学数据结构的时候,C++的语法和C语言的语法竟然不一样. 1.首先函数的参数有两种传递方式,一个是值传递,一个是地址传递.当指针作为参数传递的时候,即为地址传递,但C++写的时候需 ...

  2. 定义一个结构体student,存储学生的学号、名字、性别和年龄,读入每个学生的所有信息,保存在结构体中,并输出。

    题目描述 定义一个结构体student,存储学生的学号.名字.性别和年龄,读入每个学生的所有信息,保存在结构体中,并输出.结构体student的定义如下: struct student { int n ...

  3. ACMNO.42 C语言-第几天 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。利用结构体的在最下面

    题目描述 定义一个结构体变量(包括年.月.日).计算该日在本年中是第几天,注意闰年问题. 输入 年月日 输出 当年第几天 样例输入 2000 12 31 样例输出 366 来源/分类 C语言 题目截图 ...

  4.  一个复数可以用实部和虚部两部分组成,a1 = 1.2 + 3.4i,其中1.2是实部,3.4是虚部。定义一个结构体ComplexNumber,包含imaginary和real两个成员变量,能够表示

    题目原文     一个复数可以用实部和虚部两部分组成,a1 = 1.2 + 3.4i,其中1.2是实部,3.4是虚部.定义一个结构体ComplexNumber,包含imaginary和real两个成 ...

  5. MDK keil中在定义一个结构体的时候加点后面不出现结构体当中变量的提示

    MDK keil中在定义一个结构体的时候加点后面不出现结构体当中变量的提示 解决办法: 1.确保已经将顶层头文件stm32f10x.h添加至当前你所写的文件内: 2.检查你自己写的文件是否已经加载到工 ...

  6. 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年 问题。 写一个函数days,实现上述计算。由主函数将年、月、日传递给days函数,计算后将 日子数传回主函数输出

    /*定义一个结构体变量(包括年.月.日).计算该日在本年中是第几天,注意闰年 问题. 写一个函数days,实现上述计算.由主函数将年.月.日传递给days函数,计算后将 日子数传回主函数输出*/#in ...

  7. 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天?注意闰年问题

    定义一个结构体变量(包括年.月.日).计算该日在本年中是第几天?注意闰年问题 #include<stdio.h>struct Date{int year;int month;int day ...

  8. 题9.1:定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天, 注意闰年问 题。

    题目 本题是谭浩强<C程序设计课后习题>题9.1. 题目: 1.定义一个结构体变量(包括年.月.日).计算该日在本年中是第几天, 注意闰年问 题. 以下是本篇文章正文内容,欢迎朋友们进行指 ...

  9. 定义一个结构体类型Point,包含数据成员x和y,它们是平面坐标系下的坐标点(x,y),求两点间的距离

    题目描述:定义一个结构体类型Point,包含数据成员x和y,它们是平面坐标系下的坐标点(x,y).编写如下函数: (1)struct Point Input():在函数中输入一个坐标点的值,并返回该值 ...

最新文章

  1. JWT 添加用户名或邮箱 密码校验
  2. 一天搞定CSS:层级(z-index)--18
  3. 如何接地气地接入微前端?
  4. 删除列表中满足一定条件的元素
  5. 一头华发梳得整齐,一袭素衣低调谦逊。她是著名的环境工程专家清华第一位女院士钱易教授。...
  6. 动态规划之图像压缩问题
  7. 实现机器学习的循序渐进指南XII——Apriori
  8. IE6下css常见bug处理
  9. L1-068 调和平均 (10 分)-PAT 团体程序设计天梯赛 GPLT
  10. 【5分钟 Paper】Deterministic Policy Gradient Algorithms
  11. 【血糖检测】基于matlab改进深度回归网络的无创血糖检测【含Matlab源码 1572期】
  12. pwm控制直流电机转速流程图_PWM控制直流电机调速
  13. mysqldump 使用 --set-gtid-purged
  14. 从碧桂园和兴海物联看物业信息化、数字化和智能化
  15. tar命令中参数 cvf,xvf,cvzf,zxvf的区别
  16. python中年大叔学编程_中年大叔学编程-我用Python保存金山词霸每日一句
  17. python五种标准数据类型_python标准数据类型--数值
  18. vtkImageCheckerboard生成棋盘格,跟随鼠标移动显示
  19. pc前端js调起电脑本地应用程序(需要客户端配合 自定义URL Protocol 协议 )
  20. 4章Servlet技术:http头查看+Serverlet入门

热门文章

  1. FPGA篇(一) 基于verilog的定点开方运算(1)-逐次逼近算法
  2. 【GUI转exe】Matlab将GUI转化为exe文件
  3. 基于MATLAB的车牌定位和识别
  4. 比世界纪录快3倍 阿里云377秒完成100TB数据排序
  5. Java并发编程之:Vector和ArrayList的区别
  6. js中继承的几种用法总结(apply,call,prototype)
  7. android adb启动不了
  8. 数据库中字段类型对应C#中的数据类型
  9. SPI 简介(备忘)
  10. c语言大整数除法思路,大整数除法