网站大量收购闲置独家精品文档,联系QQ:2885784924

北京 理工大学 C语言 程序设计 第九章指针.ppt

北京 理工大学 C语言 程序设计 第九章指针.ppt

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

2000年1月25日 北京理工大学 / int a,b,c; a=1; b=2; c=a +b; C 语言提供对内存单元的“间接访问” 指针变量说明的格式与一般变量说明的格式一致。 数据类型说明符 *变量名 例:int x=2, y, *px; x,y是一般变量, px为指针型变量 这里,*的作用就是通知系统,变量px是指针变量。 被说明为指针的变量只能保存地址量。 前例:int a=1,b=2,c,*p_c; p_c = c; C语言提供一对与地址有关的运算符:* 与 。 例:int x=2, y, *px; px = x; 取变量x的地址赋值给指针px *运算符的意义 在数据类型说明中出现 “*变量名” 说明*后的变量是一个指针变量。 例如前例的:int x=2, y, *px; 在表达式中出现 “*变量名” 说明到*后变量中的地址取出内容参加运算。 例如前例的: y = x * 100; 赋值号的左值是“*变量名” 将赋值号的右值送到*后的变量指示的地址单元中。 例如前例的: *px = 10; 在说明指针变量的时候赋初值。 int x=2, y, *px=x; 用赋值语句为指针变量赋初值。 int x=2, y, *px; px=x; 已知 int i=0,j=1,*p=i,*q=j; 判断下面语句的正误。 A) i = *j; B) p = *i; C) j = *p++; D) i = *q; 例:交换变量a和b的值。 plus ( pa, pb ) int *pa, *pb; /* 形参为指针 */ { int temp; temp = *pa; *pa = *pb; *pb = temp; } main() { int a,b,c; scanf(%d%d”,a,b); plus(a,b); printf(“A + B = %d\n”,c); } max(int x,int y) { if(xy) return(x); else return(y); } main() { int max(),a,b,c; int (*p)( ); p = max; scanf(“%d%d”,a,b); c=(*p)(a,b); printf(“max=%d”,c); } 指向函数的指针变量可以作为函数的参数,主调函数需要调用不同的函数求解问题。 数组元素是内存的一个单元,故指向数组元素的指针变量的性质和指向变量的指针变量是一样的。 例如: int a[10],*p; p = a[0]; 也可以在说明语句对指针赋初值: 例如:int a[10],*p=a[0]; 引用数组元素的方式 下标方式 a[3]=1; 下标运算符[ ]做两件事: 1.计算元素的地址 a + 2 * 该数据类型长度。 2.对计算出的地址赋值或取内容。 指针方式 *(p + 3) = 1; 1.小括号内进行地址运算, 2.* 运算实现赋值或取内容。 数组名是地址,指向数组的指针变量是地址。通过指针变量也可以引用数组元素。p = a[0] 等效于 p = a。 例: main( ) { int a[]={1,2,3,4,5,6 }; int * p; p = a; printf(“ % d”,* p); printf(“ % d\n”,*(+ +p )); printf(“ % d”,* + +p); printf(“ % d\n”,*(p- -)); p + = 3; printf(“ %d %d\n”,* p,*( a + 3 )); } 多维数组名的性质 ① 多维数组名是数组的首地址。 例如:int a[3][4]; 数组名a在程序中是数组的首地址。 那么,a[0]、a[1]、a[2] 呢? 也是地址量。 把二维数组名,可理解成下面的图。 a 、 a[0] 是 a[0][0]的地址,是第一行的首地址。 例:已知: int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 求: A) *(a+6) B) *(a[0]+6)

文档评论(0)

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

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

1亿VIP精品文档

相关文档