C语言指针解说.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十章; 主要内容; 10.1地址和指针的概念;2. 另一种存取变量值的方式称为“间接访问”的方式。即,将变量i的地址存放在另一个变量中。;一个变量的地址称为该变量的“指针”。 例如,地址2000是变量i的指针。如果有一个变量专门用来存放另一变量的地址(即指针),则它称为“指针变量”。上述的i_pointer就是一个指针变量。;10.2 变量的指针和指向变量的指针变量;下面都是合法的定义: float *pointer_3; char *pointer_4; 可以用赋值语句使一个指针变量得到另一个变 量的地址,从而使它指向一个该变量。 例如: pointer_1=&i; pointer_2=&j;;在定义指针变量时要注意两点:;在对指针变量赋值时需要注意两点:;在引用指针变量时,可能有三种情况: ⑴给指针变量赋值。如: p=a; ⑵引用指针变量的值。如: printf(“%o”,p); ⑶引用指针变量指向的变量。 有关的两个运算符: & 取地址运算符。 a是变量a的地址。 * 指针运算符 (或称“间接访问”运算符),*p是指针变量p指向的对象的值。 ;例10.1 通过指针变量访问整型变量;例10 . 2 输入a和b两个整数,按先大后小的顺序输出 a和b。;运行情况如下: 5,9↙ a=5,b=9 max=9,min=5 当输入a=5,b=9时,由于a<b,将p1和p2交换。交换前的情况见图(a),交换后见图(b)。;10.2.3 指针变量作为函数参数;void swap(int *p1,int *p2) { int temp; temp=*p1; *p1=*p2; *p2=temp; };例10.4输入3个整数a,b,c,要求按大小顺序将它们输出。 用函数实现改变这3个变量的值。 ;void exchange(int *q1, int *q2, int *q3) { void swap(int *pt1, int *pt2); if(*q1<*q2) swap(q1,q2);   if(*q1<*q3) swap(q1,q3);   if(*q2<*q3= swap(q2,q3); } void swap(int *pt1, int *pt2) {int temp; temp=*pt1; *pt1=*pt2; *pt2=temp; } ; 10.3 通过指针引用数组;可以用一个指针变量指向一个数组元素。 例如:int a[10]; (定义a为包含10个整型数据的数组) int *p; (定义p为指向整型变量的指针变量) p=&a[0]; (把a[0]元素的地址赋给指针变量p) 也就是使p指向a数组的第0号元素 。;C语言规定在指针指向数组元素时,可以对指针进行以下运算: 加一个整数(用+或+=),如p+1 减一个整数(用-或-=),如p-1 自加运算,如p++,++p 自减运算,如p--,--p 两个指针相减,如p1-p2 (只有p1和p2都指向同一数组中的元素时才有意义)。;分别说明如下: 如果指针变量p已指向数组中的一个元素,则p+1 指向同一数组中的下一个元素,p-1指向同一数组中 的上一个元素。 (2) 如果p原来指向a[0],执行++p后p的值改变了,在p的原值基础上加d,这样p就指向数组的下一个元素a[1]。 (3) 如果p的初值为&a[0],则p+i和a+i就是数组元素a[i]的地址,或者说,它们指向a数组的第 i个元素 。 *(p+i)或*(a+i)是p+i或a+i所指向的数组元素,即a[i]。 (5) 如果指针变量p1和p2都指向同一数组,如执行p2-p1,结果是两个地址之差除以数组元素的长度。 ;10.3.3 通过指针引用数组元素 ;(1)下标法 #include stdio.h void main() { int a[10];   int i;  for(i=0;i<10;i++)   scanf(″%d″,&a[i]);   printf(″\n″);  for(i=0;i<10;i++)   printf(″%d″,a[i]); };(

文档评论(0)

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

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

1亿VIP精品文档

相关文档