《计算机原理与编程基础》课程教学课件(PPT讲稿)第08单元 指针_2/2

第 8 章 指针
1 第 8 章 指针

主要内容·动态分配内存一动态数组
2 • 动态分配内存—动态数组 主要内容

>动态分配内存>指针的高级使用Page3
Page 3 ➢动态分配内存 ➢指针的高级使用

动态分配内存对于程序中一般声明的变量,其所占内存空间不需要程序员管理,编译器在编译阶段就自动将管理这些空间的代码加入到目标文件中。程序运行后由系统自动为变量分配内存空间,在作用域结束后释放内存空间。有时程序只能在运行时才能确定需要多少内存空间来存储数据,这时程序员就需要采用动态内存分配的方法设计程序。动态内存分配是指在程序运行时为程序中的变量分配内存空间,它完全由应用程序自已进行内存的分配和释放。动态内存分配是在一些被称为堆的内存块中为变量分配内存空间。Page
Page 4 对于程序中一般声明的变量,其所占内存空间不需 要程序员管理,编译器在编译阶段就自动将管理这些空 间的代码加入到目标文件中。程序运行后由系统自动为 变量分配内存空间,在作用域结束后释放内存空间。 有时程序只能在运行时才能确定需要多少内存空间 来存储数据,这时程序员就需要采用动态内存分配的方 法设计程序。动态内存分配是指在程序运行时为程序中 的变量分配内存空间,它完全由应用程序自己进行内存 的分配和释放。动态内存分配是在一些被称为堆的内存 块中为变量分配内存空间。 动态分配内存

指针变量对这种的描述在C语言中是指针出现的主要原因和意义。当预先不能确定数组的容量(或者长度)时,需要在程序中动态分配内存。在C++中推荐使用new和delete算法动态分配内存或者释放内存=new[size] ;delete[];在C语言中动态内存分配是通过调用标准库函数malloc()和free()实现的。Page
Page 5 指针变量 对这种 的描述在C 语言中是指针出现的主要原因和意义。 当预先不能确定数组的容量(或者长度)时,需要在程序 中动态分配内存。在C++中推荐使用new和delete算法动态分 配内存或者释放内存 =new [size]; delete[] ; 在C语言中动态内存分配是通过调用标准库函数 malloc()和free()实现的

动态分配内存运算符new的使用形式p = new [size] ;type是数据类型,表示要为哪种数据类型的变量分配空间;size表示要为多少个变量分配空间,可以省略size(缺省值为1);p是一个type类型的指针变量,指向所分配的存储单元例Page
Page 6 运算符new的使用形式: p = new [size] ; type是数据类型,表示要为哪种数据类型的变 量分配空间;size表示要为多少个变量分配空间, 可以省略size(缺省值为1);p是一个type类型的指针 变量,指向所分配的存储单元。 例 动态分配内存

使用new运算符的例子为一个整型变量(其指针为pNum)分配内存空间int*pNum=new int;为一个单精度变量(其指针为px)分配内存空间:float* px=new float;为一个字符串分配内存空间:char*pBuffer=newchar[256]为一个整型数组(动态数组)分配内存空间:int* pa=new int[100];分配内存的同时进行初始化:/ / 区别:p=new int[555]p=new int(555);Page
Page 7 使用new运算符的例子 ⚫ 为一个整型变量(其指针为pNum)分配内存空间: int* pNum=new int; ⚫ 为一个单精度变量(其指针为px)分配内存空间: float* px=new float; ⚫ 为一个字符串分配内存空间: char* pBuffer=new char[256]; ⚫ 为一个整型数组(动态数组)分配内存空间: int* pa=new int[100]; ⚫ 分配内存的同时进行初始化: p=new int(555); // 区别:p = new int[555]

内存空间的释放运算符delete用于释放new运算符所分配的内存空间,其一般使用形式为:delete p;如果要释放一个动态数组所占用的内存空间采用如下形式:delete[]pa;使用举例Page
Page 8 内存空间的释放 ⚫ 运算符delete用于释放new运算符所分配的内存 空间,其一般使用形式为: delete p ; ⚫ 如果要释放一个动态数组所占用的内存空间, 采用如下形式: delete [ ] pa ; 使用举例

例new和delete的使用。#include voidmain()int* pi;动态分配内存pi = new int;*pi= 555;cout<<*pi<<endl;/释放new所分配的内存delete pi;1Page
Page 9 例 new和delete的使用。 #include void main() { int* pi; pi = new int; // 动态分配内存 *pi = 555; cout<<*pi<<endl; delete pi; // 释放new所分配的内存 }

标准C动态分配内存在标准C中一般用calloc(和malloc(两种函数动态分配内存;内存使用完毕后用free(释放内存voidcalloc(size t num, size t sizel);void* malloc(size t size2) ;void free(void* ptr);使用时需要#includenum:元素个数sizel:每个元素占用的字节数size2:需要分配的总字节数返回类型为void*,即通配指针类型,需要进行显式类型转换后才能赋值给其它类型的指针freeO函数用于释放动态分配的内存Page10
Page 10 在标准C中一般用calloc()和malloc()两种函数动 态分配内存;内存使用完毕后用free()释放内存 void* calloc(size_t num, size_t size1); void* malloc(size_t size2); void free(void* ptr); 使用时需要 #include ⚫ num: 元素个数 ⚫ size1: 每个元素占用的字节数 ⚫ size2: 需要分配的总字节数 ⚫ 返回类型为void*,即通配指针类型,需要进行显式类型转换后才能赋 值给其它类型的指针 ⚫ free() 函数用于释放动态分配的内存 标准C动态分配内存
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《计算机原理与编程基础》课程教学课件(PPT讲稿)第08单元 指针_1/2.pptx
- 《计算机原理与编程基础》课程教学课件(PPT讲稿)第07单元 数组与字符串3/3.pptx
- 《计算机原理与编程基础》课程教学资源(习题解答,共十一章).pdf
- 中央财经大学:《机器学习与智能金融》课程教学课件(讲稿)第一章 导论.pdf
- 中央财经大学:《机器学习与智能金融》课程教学课件(讲稿)第五章 聚类分析及其在金融领域的运用.pdf
- 中央财经大学:《机器学习与智能金融》课程教学课件(讲稿)第四章 复杂特征中抓住关键因素——降维.pdf
- 中央财经大学:《机器学习与智能金融》课程教学课件(讲稿)第十章 数据安全下的机器学习——隐私计算.pdf
- 中央财经大学:《机器学习与智能金融》课程教学课件(讲稿)第十一章 智能优化.pdf
- 中央财经大学:《机器学习与智能金融》课程教学课件(讲稿)第十二章 源源不断的新思想.pdf
- 中央财经大学:《机器学习与智能金融》课程教学课件(讲稿)第三章 关联分析与协同过滤(关联规则分析及其在金融领域的运用).pdf
- 中央财经大学:《机器学习与智能金融》课程教学课件(讲稿)第七章 结构派的大成——深度学习与自然语言处理.pdf
- 中央财经大学:《机器学习与智能金融》课程教学课件(讲稿)第六章 树类分析(决策树及随机森林).pdf
- 中央财经大学:《机器学习与智能金融》课程教学课件(讲稿)第九章 图数据分析.pdf
- 中央财经大学:《机器学习与智能金融》课程教学课件(讲稿)第二讲 线性方法.pdf
- 中央财经大学:《机器学习与智能金融》课程教学课件(讲稿)第八章 强化学习.pdf
- 《大学计算机基础》课程教学资源(二级等级考试Office应用)第4章 使用PowerPoint制作演示文稿.pptx
- 《大学计算机基础》课程教学资源(二级等级考试Office应用)第3章 通过EXCEL创建并处理 3.6 Excel与其他程序的协同与共享.pptx
- 《大学计算机基础》课程教学资源(二级等级考试Office应用)第3章 通过EXCEL创建并处理 3.5 Excel数据分析与处理.pptx
- 《大学计算机基础》课程教学资源(二级等级考试Office应用)第3章 通过EXCEL创建并处理 3.4 在Excel中创建图表.pptx
- 《大学计算机基础》课程教学资源(二级等级考试Office应用)第3章 通过EXCEL创建并处理 3.3 Excel公式和函数.pptx
- 《计算机原理与编程基础》课程教学课件(PPT讲稿)第09单元 函数_1/2.pptx
- 《计算机原理与编程基础》课程教学课件(PPT讲稿)第09单元 函数_2/2.pptx
- 《计算机原理与编程基础》课程教学课件(PPT讲稿)第10单元 结构与类.pptx
- 《计算机原理与编程基础》课程教学课件(PPT讲稿)第11单元 文件.pptx
- 《计算机原理与编程基础》课程教学课件(PPT讲稿)第01单元 计算机概述.pptx
- 《计算机原理与编程基础》课程教学课件(PPT讲稿)第02单元 编程基础.pptx
- 《计算机原理与编程基础》课程教学课件(PPT讲稿)第03单元 C语言及开发环境.pptx
- 《计算机原理与编程基础》课程教学课件(PPT讲稿)第03单元 C语言及开发环境(补充-VS开发环境的基本使用方法).pptx
- 《计算机原理与编程基础》课程教学课件(PPT讲稿)第04单元 数据类型与条件判断、第05单元 条件选择结构(if switch语句).pptx
- 《计算机原理与编程基础》课程教学课件(PPT讲稿)第06单元 循环控制.pptx
- 《计算机原理与编程基础》课程教学课件(PPT讲稿)第07单元 数组与字符串1/3.pptx
- 《计算机原理与编程基础》课程教学课件(PPT讲稿)第07单元 数组与字符串2/3.pptx
- 北京大学:《大数据分析与挖掘》课程教学资源(讲义)第一章 绪论.pdf
- 北京大学:《大数据分析与挖掘》课程教学资源(讲义)第二章 数据准备.pdf
- 北京大学:《大数据分析与挖掘》课程教学资源(讲义)第三章 关联规则挖掘.pdf
- 北京大学:《大数据分析与挖掘》课程教学资源(讲义)第四章 聚类分析.pdf
- 北京大学:《大数据分析与挖掘》课程教学资源(讲义)第五章 自动分类.pdf
- 《物联网编程技术》课程实验指导书(Python,共三十个实验).pdf
- 东莞理工学院:《场景建模设计》课程教学大纲(2024-2025第一学期).pdf
- 东莞理工学院:《WEB前端应用开发》课程教学大纲(2024-2025第一学期).pdf
