文档详情

C语言程序设计-指针.ppt

发布:2018-04-29约2.54万字共249页下载文档
文本预览下载声明
第九章 指针;学习目标; ;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为字符数组名,为常
显示全部
相似文档