第8章_指针-1.ppt

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
文档全是精心选出来的精品资料,绝对值得下载!

第8章 指 针 指针是C语言的灵魂与精华 指针可有效地表示出各种复杂的数据结构 指针能方便地使用数组和字符串 指针能在多个函数之间有效地共享内存空间 正确理解和灵活使用指针是掌握C语言重要标志 8.1 指针概述 计算机运行过程中,所有的数据存放在内存中 内存中的一个或相邻的多个字节称为一个内存单元 内存单元的大小取决于所存储的数 据类型 按字节对内存进行编址,每8位数 据拥有一个内存地址。 内存地址:每个字节在内存中的编号 8.1 指针概述 字符型变量ch占1个字节 变量ch内存单元的地址为1008H float型变量f占4个字节 变量 f 内存单元的地址为所占用4个字节中的最低端字节地址,即2000H 8.1.1 指针的概念 内存单元地址 = 指针 内存单元地址 ≠ 内存单元内容 可用一个变量来存放指针,称为指针变量 一个指针变量的值就是某个内存单元的地址 8.1.1 指针的概念 ch -- 字符型变量,其内容为’B’ p -- 字符型指针变量,其内容为104BH(地址) 则p指向变量ch,或p是指向变量ch的指针 8.1.1 指针的概念 变量的指针就是变量的地址 存放指针的变量称为指针变量。 如何表示指针变量和它所指向的变量之间的关系? “*”符号表示“指向”,若pointer是一个指针变量,*pointer表示pointer所指向的变量 假设有: int i; int *pointer; pointer=i; /* 让指针变量pointer指向变量i */ 则,以下语句的作用相同: i=3; *pointer=3; 8.1.1 指针的概念 指针是地址,是常量 指针变量可被赋予不同的指针值,是变量 常把指针变量简称为指针。 约定: “指针”是指地址,是常量, “指针变量”是指取值为地址的变量 8.1.1 指针的概念 指针变量的值是地址 可以是变量地址,也可以是其它数据结构的地址 指针变量中存放数组首地址 指针变量中存放函数的首地址 8.1.2 指针变量的定义 对指针变量的定义包括三个内容: 基类型,即被指变量的数据类型 指针类型说明符,即“*”,它说明定义的变量为一个指针变量 指针变量名,其取名规则同普通变量名 一般形式: 基类型 *指针变量名; 例如: int *p1; // p1指向一个整型变量 float *p3; // p3是指向浮点型数据的指针变量 char *p4; // p4是指向字符型数据的指针变量 8.1.2 指针变量的定义 注意 一个指针变量只能指向与其基类型相同类型的数据 8.1.3 指针变量的引用 指针有关的运算符: :取地址运算符。 * :指针运算符(或称“间接访问”运算符) 运算符“”和“*”可看作一对互逆的运算符。即,当两个运算符出现在一起时,可以相互抵消。 8.1.3 指针变量的引用 若有指向整型变量的指针变量p,整型变量a (1)定义指针变量时对其初始化 int a; int *p=a; (2)先定义指针变量,后对其赋值 int a; int *p; p=a; 不可将一个具体的常数赋予指针变量 int *p; p=1000; × 8.1.3 指针变量的引用 假设有: int i=123, x; int *ip; ip = i; 可以通过指针变量ip间接访问变量i x = *ip; 等价于 x = i; 8.1.3 指针变量的引用 假设: int i, j, *p1, *p2; i = a; j = b; p1 = i; p2 = j; 若有: p2 = p1; 8.1.3 指针变量的引用 假设: int i, j, *p1, *p2; i = a; j = b; p1 = i; p2 = j; 若有: *p2 = *p1; 8.1.3 指针变量的引用 指针变量也可以出现在表达式中 int x, y,*px=x; //变量px指向整型变量x y=*px+5; // x加5赋给y,x的内容不变 y=++*px; // x的内容加1,后将x赋给y // ++*px; 相当于++(*px); y=*px++; // 相当于y=*px; px++; #include stdio.h void main() { int a, b; int *pointer1, *pointer2; a=100; b=10; pointer1=a; pointer2=b; printf(%d

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档