指针变量可指向任何类型的变量,在处理过程中,指针变量指向的变量通过传递变量的地址来实现,指针变量的取值是内存的地址,这个地址应当是安全的,不可以是随意的。否则,写入内存单元的值将使得已存放的数据或程序丢失。应使用变异系统提供的标准函数来实现地址分配。

GCC编译器支持动态分配内存的函数 malloc() 和 free(),它们包含在头文件 stdlib.h 中。动态内存分配的含义是在程序执行的过程中,动态地划分内存空间供程序使用。当程序不需要使用这些内存空间,则可以将其释放。malloc() 函数的作用是向操作系统申请内存,free() 函数的作用是释放所申请的内存。如下例所示:

char *pc;          // 声明字符型指针变量 pc
pc = malloc(50);   // 在内存中为程序申请 50 字节的空间,并将首地址赋值给指针变量 pc
if (pc != NULL)        // 如果分配内存成功,则执行下列源代码
{scanf("%49s", pc);   // 从键盘输入获得字符串,并保存在 malloc() 所划分的内存空间内puts(pc);           // 输出字符串free(pc);           // 释放 malloc() 函数所申请的内存空间pc = NULL;            // 是指针指向空地址,避免再次引用所释放的内存空间
}

malloc() 函数的参数是长整型数值,该数值表示所申请的字节数。如果分配内存失败返回 NULL,如果成功返回所申请内存空间首地址。free() 函数必须与 malloc() 配对使用,在不需要所申请的内存空间后将其释放,否则
会造成内存泄漏,影响操作系统和其他程序运行。另外需要注意的是,free()函数释放指向 NULL 的指针,或释放指向并非 malloc() 函数所申请内存空间的指针都会造成严重的程序错误。

【C语言入门教程】4.7 指针的地址分配 - mallocl(), free()相关推荐

  1. c++ 结构体赋值_《零基础看得懂的C语言入门教程》—(十二)结构体是这么回事

    一.学习目标 了解C语言的结构体的使用方法 了解C语言结构体的结构的赋值 了解多种C语言结构体变量的赋值方法和取值方法 目录 <零基础看得懂的C语言入门教程>--(二)简单带你了解流程 & ...

  2. 2017年Go语言入门教程-徐培成-专题视频课程

    2017年Go语言入门教程-3763人已学习 课程介绍         Go语言入门教程,只要你懂中文都可以看的懂本套教程,为任何想学习Go语言研制的教程. 课程收益     让任何人都可以轻松掌握G ...

  3. C语言入门教程学习 C语言学习包括哪些?

    嵌入式开发有一定了解的朋友们知道是在操作系统内部开发的,对于操作系统内部来说基本上都是用C语言来进行编译的,所以说对于C语言的学习在嵌入式开发过程中是非常重要的.下面就给大家介绍一些C语言入门教程的相 ...

  4. 小白都能看懂的C语言入门教程

    文章目录 C语言入门教程 1. 第一个C语言程序HelloWorld 2. C语言的数据类型 3. 常量变量的使用 4. 自定义标识符#define 5. 枚举的使用 6. 字符串和转义字符 7. 判 ...

  5. iOS开发之c语言入门教程

    苹果作为移动互联的高端品牌,iOS操作系统也被用户公认为是最好用的移动互联网操作系统.据了解,曾一度拒绝为iOS平台对出浏览器的火狐在今年5月份的时候,他们却食言了.今天,Mozilla宣布iOS版F ...

  6. c语言中结构体数组的引用,【C语言入门教程】7.2 结构体数组的定义和引用

    7.2 结构体数组的定义和引用 当需要使用大量的结构体变量时,可使用结构体定义数组,该数组包含与结构体相同的数据结构所组成的连续存储空间.如下例所示: struct student stu_a[50] ...

  7. c语言入门教程文库,C语言入门教程(全集)课件

    C语言入门教程(全集)课件 01123364105 Y N p AB X=0? YN P1 A A P2 a a b b Y Y N N y n A B P A A B X=0? 3 a97 3 U ...

  8. GO语言入门教程(二)

    Hello,各位小伙伴,在接着之前发表的Go语言系列教程之投石问路之后,我们大致了解了一下Go语言的发展史和Go语言的优势,另外我也带着小伙伴进行了Go语言环境的安装和常用命令的介绍.接下来我们就正式 ...

  9. java编程输出平行四边形_JAVA语言入门教程之打印图形实例——打印平行四边形...

    本文主要向大家介绍了JAVA语言入门教程之打印图形实例--打印平行四边形,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 输出平行四边形: public class Parallelo ...

  10. 计算机语言中的逻辑型数据,零基础易语言入门教程(五)之逻辑型数据类型

    在上篇文章给大家介绍了零基础易语言入门教程(四)之数据类型,上篇针对数值到文本类型知识,今天给大家介绍下逻辑型数据. 具体方法和步骤如下所示: 1.逻辑型数据非真即假: 首先申请一个局部变量(A)类型 ...

最新文章

  1. Redis总结(五)缓存雪崩和缓存穿透等问题
  2. 进程通信学习笔记(读写锁)
  3. h3csnmp管理命令_H3C S5500V2-EI系列以太网交换机 命令参考-Release 1118-6W100_网络管理和监控命令参考_SNMP命令-新华三集团-H3C...
  4. 双十一!教你用Python感知女朋友的情绪变化?
  5. DT-06 For MQTT
  6. hdu1466(dp)
  7. Python(28)-文件,os模块
  8. 干货!看云原生时代阿里云的四个“最”
  9. java引用数据类型可以更改类型_java,基本数据类型和引用数据类型
  10. this关键字在构建错误实例时使用说明
  11. 高并发时代下的设计模式-GO和JAVA的对比
  12. 三星s5开发者选项不能连电脑问题
  13. 计算机毕业设计Java车辆调度管理系统(源码+系统+mysql数据库+lw文档
  14. PS平面设计零基础如何学好PS平面设…
  15. 安卓电视通过U盘安装第三方软件教程
  16. asp和asp.net有什么区别?
  17. TensorFlow 手写实现卷积神经网络CNN
  18. 【Vuejs】1454- 深入了解 vue-cli
  19. Linux Watchdog/看门狗
  20. 大陆居民在香港银行里怎么开帐户?

热门文章

  1. atitit.自动生成数据库结构脚本,或者更换数据库,基于hibernate4
  2. paip.myeclipse7 java webservice 最佳实践o228
  3. 5款手机通讯录同步工具
  4. 克里斯坦森:管理水平高的公司往往离崩塌不远
  5. 美丽的回测 —— 教你定量计算过拟合概率
  6. SQLite:查找到最新更新的一条记录
  7. 入云!离开张一鸣的字节,做出了第一个重大决定
  8. 蚂蚁金服研究员何征宇:系统软件和开源都是手段,不是目的
  9. 胡晓博:3月21日阿里云北京峰会ECS大神
  10. c语言怎样用vc绘图,大佬们,小菜鸟想问一问用vc编译器做简易画图软件