C语言专业 大一课本第7章 指针课件.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言专业 大一课本第7章 指针课件

内存 从变量的Scope开始 变量类型 局部变量 全局变量 静态变量 请问下面代码中,哪些是局部变量?哪些是全局变量?哪些是静态变量? int pi = 3; int Area(int r, int *sum) { int b; static int c =0; b = pi * r * r; c += b; *sum = c; return b ; } 内存 分析这段程序的执行结果 int pi = 3; int Area(int r, int *sum) { int b; static int c =0; b = pi * r * r; c += b; *sum = c; return b ; } int calculator() { int sum1 = 0, sum2 = 0; int aa = 2, ab = 3, ac = 4; sum1 = Area( aa, sum2 ); // 执行后,sum1, sum2等于多少? sum1 += Area( ab, sum2); // 执行后,sum1, sum2等于多少? Sum1 += Area( ac, sum2); // 执行后,sum1, sum2等于多少? } 内存 变量的存贮 内存:变量的存储位置 不同Scope的变量,存储在不同内容区域;这反映了运算时变量不同的特性。 内存类型 内存分为静态内存和动态内存,动态内存又可以分为堆内存和栈内存。内存分配方式相应的分为静态存储区域分配、栈创建、堆分配。 静态存储区域分配 程序在编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。 例如前面例子中的变量(int pi)、静态变量(static int c)和常量; 栈创建 函数执行的时候,函数内的局部变量(包括函数参数)的存储单元都是在栈上创建的,函数执行后占用栈的存储单元会自动被释放。这种分配效率很高,但是分配的内存容量有限。占用栈内存多了,会出现栈溢出; 例如函数area的参数(int r, int *sum)和局部变量(int b)就是栈创建的。 堆分配 也称动态存储分配,是指程序在运行时候用malloc申请的内存,程序员自己负责在何时用free释放内存。这种分配虽然灵活,但是使用时容易出错,需要注意。 内存 分为4个区域: 内存 内存分配和释放 内存 内存 内存 内存 直接访问与间接访问 直接访问:按变量地址存取变量值 间接访问:通过存放变量地址的变量去访问变量 2 指针变量: 指针变量与其所指向的变量之间的关系 指针变量的初始化 一般形式:[存储类型] 数据类型 *指针名=初始地址值; 例:通过指针变量访问整型变量 指针变量作为函数参数——地址传递 特点:共享内存,“双向”传递 三种方法的统一: 三种方法的本质都是:间址(变址) 无论是下标法(a[ i ])还是计算法(*(a+i))还是指针法(* (p +i) ),尽管表现形式不同,可本质都是: *(首址+ 偏移量) 与指针相关的运算符 指向由m个元素组成的一维数组的指针变量 定义形式: 数据类型 (*指针名)[一维数组维数]; 例 int (*p)[4];定义了指向包含4个整型元素的一维数组 二维数组的指针作函数参数 用指向变量的指针变量 用指向一维数组的指针变量 4 指针与字符串 字符串访问形式 1,用字符数组实现 字符串指针作函数参数 字符指针变量与字符数组讨论 char *cp; 与 char str[20]; str由若干元素组成,每个元素放一个字符;而cp中存放字符串首地址 char str[20]; str=“I love China!”; (?) char *cp; cp=“I love China!”; (?) str是地址常量;cp是地址变量 cp接受键入字符串时,必须先开辟存储空间 用函数指针变量作函数参数 例 用函数指针变量作参数,求最大值、最小值和两数之和 6 返回指针值的函数 函数定义形式: 类型标识符 *函数名(参数表); 例 int *f(int x, int y) 7 指针数组和多级指针 用于处理二维数组或多个字符串 指针数组 定义:数组中的元素为指针变量 定义形式:[存储类型] 数据类型 *数组名[数组长度]; 例 int *p[4]; void print(char *name[ ],int n) {

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档