- 1、本文档共76页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言第六次答案课件
第七章 指针;7.1 指针概念;基本概念总结;基本概念总结;什么是指针;什么是指针;7.2 指针变量的定义和使用;简单的指针运算示例;指针变量初始化;7.3 指针与一维数组; 1 一维数组的内存安排;遭乒襄折诺狡圃敲宪殃短胶樊扯炔遵组科肚耶埂酋才涵躬桓涂奶郊厕摄傲C语言第六次答案课件C语言第六次答案课件;2 指向数组的指针运算;指向数组的指针运算-加减整数运算;指向数组的指针运算-自增自减运算;;指向数组的指针运算-比较运算;指向数组的指针运算-相减运算;3 下标法与指针法表示数组元素的等价性 ;二、使用指针时配合使用下标运算符
C语言可以将数组中的下标表示看成运算符,下标运算符一般与数组配合使用,也可以和指针配针使用,设有定义:
int a[5], *p=a;
则a[2]与*(p+2)都是数组中下标为2的元素,而表达式p[2]表示同样的元素,对指针变量来说,下标运算符等同于取值运算符,即p[2]等价于*(p+2),以下4个式子等价:
a[2] *(p+2) *(a+2) p[2];三、下标法表示与指针法表示的等价性
当指针不是指向数组的第一个元素时,同一个数组元素用不同的指针表示时,下标可能不同的,设有定义:
int a[5], *p=a, *q=a+2;
指针q指向a[2],*q为数组元素a[2],改为下标运算符就是q[0],即q[0]与a[2]为同一个数组元素,指针q-2指向a[0],则*(q-2)与q[-2]都是a[0]。
因此对指针来说,下标取负数是允许的。
见表7-2(P187);例1:指针与数组的关系示例。
main ( )
{ int a[5] , i, *p=a;
for ( i=0; i5; i++ ) scanf(%d, a[i]);
for ( i=0; i5; i++ ) printf(%d, a[i]);
}
程序中scanf和 printf函数可作如下3组等价替换:
⑴ scanf(%d, p+i); printf(%d, *(p+i));
⑵ scanf(%d, a+i); printf(%d, *(a+i));
⑶ scanf(%d, p[i]); printf(%d, p[i]);
;上述程序也可写成:
main ( )
{ int a[5] , i, *p=a;
for ( i=0; i5; i++ ) scanf(%d, p++);
p=a;
for ( i=0; i5; i++ ) printf(%d, *p++);
}
注意:
p++不能写成a++,因为a是地址常量。
*p++等价于*(p++),其运算顺序是先计算 *p,然后计算p++。;7.4 指针与函数;1 指针型变量作为函数参数;main ( )
{ int a=2, b=5, *ap, *bp;
ap = a; bp = b;
printf (\na = %d b = %d, a, b);
swap1(a, b);
printf (\na=%d b=%d, a, b);
swap2(ap, bp);
printf (\na=%d b=%d, a, b);
};例2:写出下列程序的输出结果:
main()
{ int fun(int *, int);
int j=4, m=1, k;
k=fun(j, m);
printf(The first k:%d\n, k);
k=fun(j, m);
printf(The second k:%d\n, k);
}
;二、整个数组作参数
当编写函数对数组做某种计算时,需要将数组的的信息传递到函数中,这就是传递数组,在C语言中,传递数组采用传址方式,传递的其实是数组的首地址。
传递数组就是传递数组的首地址,不管数组多大,传递都能很快完成,但是函数对数组元素的任何修改都会影响到调用函数。 ;例3:写出下列程序的输出结果。
#include stdio.h
main()
{void fun(int *, int, int);
int i,s[]={0, 1, 2, 3, 4, 5};
fun(s, 0, 3);
fun(s, 2, 5);
for(i=0; i6; i++)
printf(s[%d]=%d , i, s[i]);
}
;例4:编制在给定的字符串中寻找指定字符的函数(假设该字符串中只有唯一的一个指定字符)。若找到,则返回指向字符串中该字符的指针;否则,返回NULL。
#def
文档评论(0)