第2章:数据抽象

来源:互联网 发布:数据透视表 生活 编辑:程序博客网 时间:2024/06/02 01:19

2.1 声明与定义
  声明:向计算机介绍名字,不分配存储空间,使用关键字extern,函数声明:可以不用extern,只用不带函数体的函数名连同参数表或返回值。
  定义:为这个变量或者函数申请存储空间,对变量,编译器确定它占用多少存储单元,在内存中产生存放它们的空间;对函数,编译器产生代码,并为之分配存储空间且存储空间中有函数名产生的指针。
2.2 动态内存分配
  堆是很大的内存块,用于在运行时分一些小的单元,如果不能预先知道需要的最大存储量,可从堆中分配。动态内存分配函数包括malloc()、calloc()、realloc()和free()。realloc(参数1,参数2):参数1:已经分配又希望重新分配的存储单元的首地址,参数2:新块的长度,如果参数2比原来的小,不需要拷贝,只用告诉堆管理器空间是空闲的,如果参数2比原来的空间大,堆中没有足够相邻空间,要分配新块且要拷贝内存。
  对动态内存分配,编译器不知道需要多少存储单元、生命周期,不能自动清除,程序员应使用cleanup()函数free()掉不用的存储空间。
2.6 对象
  将函数封装到对象中,使得函数也成为数据结构的一部分,解决了对象定义的函数重命名的问题。
2.7 头文件形式
  C和C++允许对函数重复声明,但不允许对结构重复声明。一个问题是多个文件高寒同一个数据结构的头文件,编译器将认为是结构重复声明,C++中采用预编译处理器隔离这个头文件。如有一个头文件名:FOO.H

  #ifndef FOO_H  #define FOO_H  #endif 
0 0