c语言程序设计第六章 指针.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语言程序设计第六章 指针

第六章 指针 6.1 指针的概念 6.2 指针变量的定义和引用 6.3 指针与数组 6.4 指针与函数 6.5 多级指针 6.1 指针的概念 指针是C语言的重要特色,正确的应用指针,可以: 使程序简洁、紧凑、高效; 有效地表达复杂的数据结构; 动态分配内存,直接处理物理内存地址; 得到多于一个的函数返回值。 变量与地址 变量是对程序中数据存储空间的抽象 变量的地址是其存储单元的首字节地址 指针与指针变量 指针:变量的地址 指针变量:专门用来存放变量地址的变量 与*运算符 (取地址运算):取变量的地址 设i是变量,则i为i的地址。 *(取内容运算):取指针所指向的目标变量 设i_pointer是指向变量i的指针变量,则*i_pointer 为i。 两者互为逆运算,即以下表达式是等价的: i_pointer ? i *i_pointer ? i i_pointer ? (*i_pointer) i ? *(i) 与*运算示例 设变量i, j和指针变量p1, p2在内存的位置和内容如下图,则和*的运算结果为: 访问变量的方式 对变量的访问是指对变量的取值或赋值操作。可采用两种方式: 直接访问:通过变量名直接访问。 间接访问:通过指向该变量的指针来访问,如通过i_pointer访问i。 直接访问与间接访问 6.2 指针变量的定义和引用 指针变量的定义 指针变量的初始化 指针变量的引用 指针运算 指针变量的定义 定义形式: 类型说明符 * 指针变量名; 例: int *ip, i; /* 定义ip为整型指针变量,i为整型变量*/ char * name; /* 定义name为char型指针变量*/ float *fp1; /* 定义fp1为float型指针变量*/ 指针变量的初始化 一般形式: 数据类型 *指针变量名=初始地址值; 空指针与野指针 空指针:其值为0(用NULL表示)的指针。如: int *p=0; 或 int *p=NULL; 野指针:未初始化的指针,其值不确定。 空指针不指向任何目标,野指针指向不确定的目标。 比较: int i; int *p1=i; /*p1指向变量i*/ float *p2; /*p2的指向不确定*/ char *p3=NULL; /*p3不指向任何目标*/ 指针变量的引用 通过引用指针变量,可以间接访问目标变量。修改指针,则访问目标也改变。 例: int i, j; int *p; i=0; j=i; /* 直接访问i , j */ p = i; /* p指向i */ *p = 100; /* 间接访问i */ p = j; /* p指向j */ *p = 200; /* 间接访问j */ 指针变量应用举例 例6-1 #includestdio.h void main() { int var; int *p; var = 10; p = var; /*必须先对p 赋值,才能引用*/ printf(var=%x, p=%x\n, var, p); printf(var=%d, *p=%d\n, var, *p); *p=100; printf(var=%d,*p=%d\n, var, *p); } 指针应用举例 例6-2:输入两个数,按由大到小的顺序输出。 void main() {int *p1, *p2, *p, a, b; scanf(%d,%d, a, b); p1=a; p2=b; if(ab) {p=p1; p1=p2; p2=p;} printf(a=%d,b=%d\n,a,b); printf(max=%d,min=%d\n,*p1,*p2); } 输入:5, 9 运行结果:a=5,b=9 max=9,min=5 指针的算术运算 指针与整数的加减运算: p+n:p指向的当前位置之后n个数据单位的位置。 p-n: p指向的当前位置之前n个数据单位的位置。 如:float x, *p=x; p=p+5; /*p向后移动5*4个字节*/ p=p-2;

文档评论(0)

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

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

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档