- 1、本文档共533页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计(第5版)谭浩强.pptC语言程序设计(第5版)谭浩强.ppt
C 语言程序设计 第十章 指针 10.2 变量的指针和指向变量的指针变量 ? 定义一个指针变量 指针变量在使用前必须定义,使其指向特定类型 的变量,指针变量存放地址,必须定义为?指针类 型?。 ? 定义的一般形式: 基类型 * 指针变量名 ; 例 int * p1, * p2; ? 基类型:用来指定指针变量可以指向的变量的类型。 float *q ; 将决定指针移动和运算时的移动量。 static char *name; 构成: [ 存储类型 ] 数据类型 注意: ? * :表示该变量为指针类型 1 、 int *p1, *p2; 与 int *p1, p2 ; 2 、指针变量名是 p1,p2 , 不是 *p1,*p2 3 、 指针变量只能指向定义时所规定类型的变量 4 、指针变量定义后, 变量值不确定 ,应用前必须先赋值 C 语言程序设计 第十章 指针 ? 进一步理解 与 * 运算符: 指针运算符(?间接访问?运算符) 取地址运算符 i_pointer ? 两者关系:互为 逆运算 含义 : 取指针所指向变量的内容 含义 : 取变量的地址 单目运算符 i_pointer 2000 单目运算符 ? 理解 优先级 : 2 优先级 : 2 结合性 : 自右向左 结合性 : 自右向左 …... 2000 2001 2002 2003 2004 2005 2006 ? 含义 *i_pointer 10 i 整型变量 i 10 i_pointer i (*i_pointer) i_pointer = i = (*i_pointer) i *i_pointer *(i) i = *i_pointer = *(i) 变量 i _pointer 2000 指针变量 i_pointer ----- 指针变量,它的内容是地址量 *i_pointer ---- 指针的 目标变量 ,它的内容是数据 i_pointer --- 指针变量占用内存的地址 …... C 语言程序设计 第十章 指针 ? 指针变量的初始化 一般形式: [ 存储类型 ] 数据类型 * 指针名 = 初始地址值 ; 例 int i; int *p= i ; 例 例 int i; int *p= int *p= i ; i ; int i; int *q= p ; 指针变量赋值: 赋给指针变量, int i, j; 不是赋给目标变量 int *p1, *p2; 变量必须 已说明过 p1=i; p2=j ; 类型 应一致 i=3; *p1=5; j=6; *p2=8; 2000 3 5 i 例 main( ) 用已初始化指针变量作初值 2002 6 8 j { int i; ┇ static int *p=i; 2000 p1 2002 p2 .............. 不能用 auto 变量的地址 } ( ? ) 去初始化 static 型指针 C 语言程序设计 第十章 指针 ? 指针变量的引用 例 10.1 通过指针变量访问整型变量 运行结果: #include stdio.h a=100, b=10 void main( ) *p1=100, *p2=10 {int a, b, *p1, *p2 ; a=ffd4, b=ffd6 p1=ffd4, p2=ffd6 a=100; b=10; p1=ffd8, p2=ffda p1=a; p2=b; printf(―a=%d, b=%d \ n‖,a, b); printf(―* p1=%d, * p2=%d \ n‖, *p1, * p2); printf(―a=%x, b=%x \ n‖,a, b); printf(―p1=%x, p2=%x \ n‖, p1, p2); printf(― p1=%x, p2=%x \ n‖, p1, p2); 100 a } ffd4 10 b ffd6 ffd4 p1 ffd8 ffd6 p2 ffda C 语言程序设计 第十章 指针 关于 和 * 运算符的进一步说明: * 、 :优先级同为 2 级, 结合性:从右向左。 1. 若已执行: int a, b, * p1, * p2; p1=a; p2=b; a=100; b=10; 则 ① * p1 ? a (p1) * p2 ? b (p2) ② p2=* p1 ? p2=a 2. * a p1 :先进行 a 得 a a 的地址,再对 p1 a 的地址进行 * 运算 a 即指向 a 地址所指
文档评论(0)