- 1、本文档共249页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计-指针
第九章 指针;学习目标; ;9.1 指针变量的概念;美美的家;5;;指针变量;9.1.2 指针变量和指针的类型;9.2 变量的指针与指针变量;9.2.1 指针变量的定义及使用;指针变量的使用;例9.1 指针的运用;和*运算符的结合方向;main()
{
int x,y,*px,*py,*p;
scanf(%d%d,x,y);
px=x;py=y;
if(xy)
{ p=px;
px=py;
py=p;
}
printf(x=%d,y=%d\n,x,y);
printf(MAX=%d,MIN=%d\n,*px,*py);
};9.2.2 指针变量的初始化;说明:
- x为 内部auto变量,在每次程序进入该函数
或分支程序时都被重新分配内存单元,退出
后内存单元即被释放。
- 静态指针p却要长期占用已分配的内存单元,
当程序流程退出后,内存单元也不释放,这
样会使静态指针指向一个可能已被释放的单元; “=” 指针的赋值运算。;指针与整数的加减运算;例 int a[10];
int *p=a[2];
p++;
*p=1;; 表示其所指向的存储单元的相对位置。
若px和py指向同一数组,则
pxpy 表示px指的元素在前
pxpy 表示px指的元素在后
px= =py 表示px与py指向同一存储单元
px= =0 表示px为空指针? p= =NULL
若px与py不指向同一数组,比较无意义;例9.3 求字符串的实际长度;例9.4 采用递归法对a数组中的元素进行逆置; 小 结
要求:1.了解指针的概念
2.掌握指针的基本用法
重点:变量的指针及其应用
难点:指针的概念; 作 业
课后习题:;9.3 指针与数组;9.3.1 指向数组的指针;数组元素的四种表示方法:;(1)p为指针变量,a为数组名, 判断对错
for(p=a;a(p+10);a++)
printf(“%d”,*a);
(2)假设p指向数组a,即p=a,区别*p++*(p++), *(++p) ,(*p)++
① *p++ *(p++)
++与*优先级相同,右结合,所以等价
*(p++):
先引用p,取*p的值,然后使p自增1。即先取p所指向单元的内容(*p),然后使p+1送p(即p指向下一单元)。
② *(++p):
先使p加1,再取*p。
若p初值为a(即a[0]),则*(p++)为a[0],而*(++p)为a[1]。
③ (*p)++ :
将p所指向的元素值加1(而不是指针值加1)
如果p=a,则(*p)++相当于(a[0])++,若a[0]=3,则(*p)++(即(a[0])++)的值为4。 ;;【 例9.6 】
#include stdio.h
main()
{
int *p,i,a[10];
p=a;
for(i=0;i10;i++)
scanf(%d,p++);
printf(\n);
for(i=0;i10;i++,p++)
printf(%u ,*p);
}
运行输入:
1 2 3 4 5 6 7 8 9 0
运行结果:
;例9.7 使用指针变量举例;#include stdio.h
int a[]={0,1,2,3,4};
main()
{
int i,*p;
for(p=a+4;p=a;p--)
printf(%d\t,*p); /*----①----*/
putchar(’\n’);
for(p=a+4,i=0;i=4;i++)
printf(%d\t,p[-i]); /*----②----*/
putchar(’\n’);
for(p=a+4;p=a;p--)
printf(%d\t,a[p-a]); /*----③----*/
putchar(’\n’);
}
运行结果:
;字符串表示形式:
例9.9 字符数组方式;;例9.9中的s1与本例中的s2,都能处理字符串,s1为字符数组名,为常
文档评论(0)