结构体是一个类似超级数组一样的定义, 它可以定义许多不同类型的变量, 用struct 加上变量名, 类似于int a这样子的定义, 但区别在于结构需要用{};等三个符号来概括包含里面的内容, 定义好之后, 可在main函数中直接调用, 用(.)或者(->)两个运算符进行调用.

struct book
{char titleP[MAXTITL]char author[AXAUTL]float value
}library;

上面这样子就是帮结构体book起一个别名叫做library, 在main函数当中我们也可以直接使用library, 还有另外一种声明方法.

struct
{char titleP[MAXTITL]char author[AXAUTL]float value
}library;

这样子写法就是一开始可以不用给结构体定义变量名, 到最后面的时候直接给结构体起另一个别名library, 这样子可以省略一个命名的步骤.

下面就是结构题的使用方法

#include <stdio.h>
#include <string.h>
#define MAXTITL 41  //书名的最大长度+1
#define MAXAUTL 31  //作者名的最大长度+1
struct book     //结构模板: 标记book
{char title[MAXTITL];char author[MAXAUTL];float value;
};int main(int argc, const char * argv[]) {struct book library;    //把library声明为book类型的变量printf("Please enter the book title.\n");gets(library.title);    //gets是bug的存在, 容易溢出, 一般不推荐使用//scanf("%s",library.title);    //访问title部分printf("Now enter the author.\n");gets(library.author);   //gets是bug的存在, 容易溢出, 一般不推荐使用
//    scanf("%s",library.author);printf("Now enter the value.\n");scanf("%f", &library.value);printf("%s by %s: $%.2f\n", library.title, library.author, library.value);printf("%s: \"%s\"($%.2f)\n", library.author, library.title, library.value);printf("Done.\n");return 0;
}

C程序内存地址空间布局

1,文本短(.text:可执行的指令)

2.数据段

初始化数据段(全局变量, 静态变量)

非初始化数据段

初始化数据段需要我们自己定义, 运行之前就代入进去.

非初始化数据段是由系统在程序运行的时候代入进去的

3.栈(stack) 由系统自己分配

数据是先进后出(或者是后进先出)

a.局部变量

b.函数调用时返回地址

c.调用着的环境信息

4.堆(heap)需要我们自行分配释放管理(普通的局部变量)

由我们自己分配释放管理, 如果我们不去释放, 程序结束时才会由系统自动回收.

程序中的malloc, calloc, realloc等函数都是分配内存. 由小的空间向大的空间分配, 堆是从下向上分配.

转载于:https://www.cnblogs.com/iOSCain/p/3991540.html

戴维营第八天上课总结相关推荐

  1. 戴维营第二天上课总结

    今天珊哥讲解了进制的转换, 以及C语言的32个关键字, 然后我自己尝试算了一道进制的转换题目 二进制转换十进制 1010 = 1*2^3+0*2^2+1*2^1+0*2^0 = 10 十进制转二进制 ...

  2. 戴维营第七天上课总结

    今天的内容是关于字符串, 指针, 数组这些问题, 要知道在C语言中是没有为字符串定义一个类型的, 只有用char[]的数组类型的方式存储字符串, 打印的时候使用%s 打印, 指针呢, 变量的地址称为指 ...

  3. 戴维营第六天上课总结

    今天珊哥给我们讲解了预处理,宏定义, 数组, 以及画图, 宏定义.... 编译预处理:对源程序进行编译之前所作的工作,它由预处理程序负责完成.编译时,系统将自动引用预处理程序对源程序中的预处理指令进行 ...

  4. 戴维营第五天上课总结

    今天大茶给我们讲了C语言的递归以及函数的调用, 函数的调用, 可以在其他文件中创建函数的源文件, 在main文件中进行调用, 可以节俭在main函数的多行代码, 一旦程序出错, 调试起来也非常的方便, ...

  5. 戴维营第四天上课总结

    今天大茶继续给我们讲解C语言的知识点, 以及注意事项, 由于没有基础, 所以学习进度非常的慢, 虽然有很多东西都难以理解, 但越是难以理解, 编程的魅力就越大, 哪怕是我只会让电脑输出一个hello, ...

  6. 戴维营第三天上课总结

    今天轮到大茶给我们讲课, 给我们更加详细的讲解各个数据类型, 以及其他关键字, 并且给我们演示怎么用代码编写一个计算器, 还有怎么算闰年, 左移等等知识点, 其中的代码有 #include <s ...

  7. 戴维营教育最新项目实战开发视频出炉:Swift、XMPP、SpriteKi...

    Swift语言开发实战高级教程:http://edu.51cto.com/course/course_id-2337.html 第一部Swift语言实战开发视频教程, 将Swift语法与iOS开发相结 ...

  8. 学生上课睡觉班主任怎么处理_学生上课睡觉,老师的管与不管,不是你看到的那么简单...

    学生上课睡觉的原因,可以分为正常的和不正常的. 正常的,一种是在天气热的时候,人容易犯困,学生会有上课睡觉的:另一种是因为学习熬夜,导致的白天没精神而上课的时候控制不住自己睡觉. 不正常的,一种是熬夜 ...

  9. 带套属于安全行为吗_教师不管学生上课睡觉的行为,属于不负责任吗?建议收藏!...

    这是当老师的失职 组织教学是课堂重中之重,课堂上看到学生睡觉,不管不问,听之任之,这是当老师的失职,失德行为,是误人子弟之举!一个学生睡觉你不管不问,接下来就有几个甚至更多,教学质量如何谈起?上课有学 ...

最新文章

  1. Pandas 基础 (3)—— 重新索引
  2. 哈佛最受学生欢迎的CS50课程来啦!「撕书教授」在家录了一套4K网课
  3. Android异步处理三:Handler+Looper+MessageQueue深入详解
  4. 浏览器中遮罩层镂空效果的多种实现方法
  5. 微信支付条码支付上线啦
  6. MongoDB 教程三: 高级查询
  7. python线程的学习
  8. 应用程序如何链接静态QT Plugin库
  9. https防止注入_【缺陷周话】第40期:JSON 注入
  10. java equals getclass_Java equals()方法 – 子类中equals的语义如何确定getClass和instanceof的使用...
  11. kkfileview预览html乱码,kkFileView(在线预览方案)
  12. 去除maven父依赖_如何在Maven中从父项目中排除依赖项?
  13. php使用正则表达式标记标题,PHP正则表达式以匹配HTML标记a之外的关键字
  14. 深度学习(十八)基于R-CNN的物体检测-CVPR 2014
  15. 软件测试——测试用例设计测试分类详解
  16. 502 proxy error解决方法_Homebrew安装、卸载、可能的报错及解决方案_Mac
  17. 利用Matlab实现线性动态电路的可视化研究
  18. Micrometer中文文档
  19. win10系统怎么合并电脑分区?
  20. 100725B Banal Tickets

热门文章

  1. Python—end=用法
  2. Dragon Balls
  3. 【Overload游戏引擎】源码分析之五:OvRendering函数库(三)
  4. 我的世界java版区块显示_我的世界手游区块显示指令分享:区块玩法操作详解[多图]...
  5. 模具厂干了将近三年,目前想学模具设计,好学吗
  6. 枚举类与注解的详细介绍
  7. C8051F与80C51系列单片机的初始化比较
  8. IPSEC的原理及配置步骤整理(一)
  9. android解析doc,docx,xls,xlsx文件
  10. 爬虫配套学习-前端学习笔记23-CSS相关