首页 > 代码库 > 戴维营第八天上课总结
戴维营第八天上课总结
结构体是一个类似超级数组一样的定义, 它可以定义许多不同类型的变量, 用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 //作者名的最大长度+1struct 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等函数都是分配内存. 由小的空间向大的空间分配, 堆是从下向上分配.
戴维营第八天上课总结
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。