美文网首页
数据结构基础笔记001 指针和动态存储分配

数据结构基础笔记001 指针和动态存储分配

作者: Cytosine | 来源:发表于2017-07-17 19:10 被阅读0次

《数据结构基础》
作者: [美]Ellis Horowitz 霍罗维兹
译者: 朱仲涛
出版社: 清华大学出版社
ISBN: 9787302186960
豆瓣读书 中查看本书

指针

  • C允许指针做算数运算,包括加减乘除。
  • 指针之间可以做比较,结果返回大于、小于、相等三者之一。
  • 指针还可以通过强制显式地转换成整数。
  • 指针变量的长度可以是不同值,指向char的指针变量也许比指向float的指针变量长度更长。
  • C用特殊的值NULL表示空指针。对于具体系统,空指针用整数值0表示。C中NULL是一个宏,具体实现就定义为常量值0。空指针可用在关系表达式中,表示布尔量“”,因而测试空指针的语句可以是:
if(p==NULL)

或者更简洁:

if(!p)

动态存储分配

  • 动态存储分配在系统堆(heap)中。
  • malloc在程序中很常见,方便的方法是一定宏语句。一种实现:
#define MALLOC(p,s)\
if( !(p)=malloc(s)) ){\
    fprintf(stderr,"Insufficient memory");\
    exit(EXIT_FAILURE);\
}
  • 悬空引用(dangling reference):指向存储空间A的指针被赋值后,指向存储空间B。存储空间A中所存储的值对程序而言,就丢掉了。
  • 好习惯:让所有尚未指向实际目标的指针都取NULL。以尽量避免访问一块尚未申请的空间,或访问一块无权访问的空间。
  • 好习惯:在转换指针类型时,显式地使用强制类型转换。
float * p=(float*)malloc(sizeof(float));
  • 好习惯:明确指定函数的返回类型。很多系统中,指针类型的大小和int类型大小相同,函数返回类型没有显式定义,int返回类型以后可能被解释为指针。

相关文章

  • 数据结构基础笔记001 指针和动态存储分配

    《数据结构基础》作者: [美]Ellis Horowitz 霍罗维兹译者: 朱仲涛出版社: 清华大学出版社ISBN...

  • Linux C语言链表学习笔记

    链表是一种常见的基础数据结构,结构体指针在这里得到了充分的利用。链表可以动态的进行存储分配,也就是说,链表是一个功...

  • 智能指针

    智能指针是一个类,用来存储指向动态分配对象的指针,负责自动释放动态分配的对象,防止内存泄漏。动态分配的资源交给一个...

  • c++11智能指针(一) shared_ptr

    智能指针是存储动态分配对象指针的类,用于生命周期的控制。当指针离开其作用域时,自动销毁动态分配的空间,防止内存泄漏...

  • 2018/08/09

    指针高级应用 一、动态存储 1 分配内存需要用到的函数 2 空指针概念,作用 二、动态分配字符串 1 字符串 2...

  • 数据结构(C++)二维数组的动态创建

    一、动态存储空间的分配 C++使用new操作符进行存储空间的动态分配,它的值是一个指针,值向所分配的空间。所以必须...

  • 2017.9.14

    对象数组,指针,内存访问方式通过变量名地址访问,地址运算符,&、指针变量 概念,动态存储分配

  • 实验 使用动态分区分配方式的模拟

    1、实验目的 了解动态分区分配方式中使用的数据结构和分配算法,并进一步加深对动态分区存储管理方式及其实现过程的理解...

  • 指针是C语言中重要数据类型,利用指针可以有效的表示复杂的数据结构,实现动态分配内存,更方便、更灵活的使用数组、...

  • C语言-用指针实现内存动态分配

    动态存储分配函数 在C语言中,动态分配内存是通过动态存储分配函数 malloc() 来实现的,其功能是: 在内存的...

网友评论

      本文标题:数据结构基础笔记001 指针和动态存储分配

      本文链接:https://www.haomeiwen.com/subject/mieqkxtx.html