第8章 指针《C语言程序设计(第三版)》-电子教案
《C语言程序设计(第三版)》-电子教案-丁亚涛-7073
21世纪高等学校精品规划教材
第8章 指针 章
《C语言程序设计(第三版)》-电子教案-丁亚涛-7073
理解并掌握地址, 理解并掌握地址,指针和指针变量的概念 练掌握指针变量的定义, 练掌握指针变量的定义,初始化和引用方法 理解并掌握指针与数组的关系 了解指针数组和多级指针的概念 了解指针与函数的关系 学会在程序设计中正确应用指针解决实际问题
《C语言程序设计(第三版)》-电子教案-丁亚涛-7073
引言指针是C语言区别于其他程序设计语言的主要 指针是 语言区别于其他程序设计语言的主要 特征之一. 特征之一. 正确灵活地使用指针可以充分地发挥C语言的 正确灵活地使用指针可以充分地发挥 语言的 特点,提高某些程序的执行效率, 特点,提高某些程序的执行效率,更加方便地 表示和访问复杂的数据结构, 表示和访问复杂的数据结构,直接对内存操作 等.
《C语言程序设计(第三版)》-电子教案-丁亚涛-7073
8.1 指针的概念C语言允许使用变量名,数组名[下标 ,函数 语言允许使用变量名,数组名 下标], 语言允许使用变量名 下标 名等标识符来访问内存 指针其实就是在内存中的地址, 指针其实就是在内存中的地址,它可能是变量 的地址, 的地址,也可能是函数的入口地址 变量指针存储的地址是变量的地址 变量指针存储的地址是变量的地址 函数指针存储的地址是函数的入口地址 函数指针存储的地址是函数的入口地址 指针变量也简称为指针 是指它是一个变量, 也简称为指针, 指针变量也简称为指针,是指它是一个变量, 且该变量是指针类型的
《C语言程序设计(第三版)》-电子教案-丁亚涛-7073
8.2 指针变量的定义和初始化定义指针变量的形式如下: 定义指针变量的形式如下:指针变量名; 数据类型 *指针变量名 指针变量名
定义并初始化的形式为: 定义并初始化的形式为:数据类型 *指针变量名 变量名 指针变量名=&变量名 指针变量名 变量名;
例如: 例如:int a; int *p=&a;
或者: 或者:int a,*p=&a;
没有指向的指针变量的值是随机的,称为" 没有指向的指针变量的值是随机的,称为"野指 针".
《C语言程序设计(第三版)》-电子教案-丁亚涛-7073
指针变量与 变量的关系int a,*pa=&a;
《C语言程序设计(第三版)》-电子教案-丁亚涛-7073
8.3 指针运算8.3.1 * 运算符和取地址运算符& 运算符和取地址运算符int a=1000, *pa=&a; *(&a) == a &(*p) == p指向运算符 * 和取地址运算符 & 互逆 不能写成: 不能写成 *(& p)
《C语言程序设计(第三版)》-电子教案-丁亚涛-7073
8.3.2 指针变量的引用【例8-1】演示指针变量的引用 】void swap1(int x , int y){int temp;temp = x;x = y;y = temp;} void swap2(int *x , int *y){int temp;temp = *x;*x = *y;*y = temp;} void swap3(int *x , int *y){int *temp;temp = x;x = y;y = temp;} void main() {int a,b; int *pa,*pb; pa=&a; pb=&b; a=10,b=20;swap1(a,b); printf("a=%d,b=%d,*pa=%d,*pb=%d\n",a,b,*pa,*pb); a=10,b=20;swap2(pa,pb); printf("a=%d,b=%d,*pa=%d,*pb=%d\n",a,b,*pa,*pb); a=10,b=20;swap3(pa,pb); printf("a=%d,b=%d,*pa=%d,*pb=%d\n",a,b,*pa,*pb); }
《C语言程序设计(第三版)》-电子教案-丁亚涛-7073
【例8-1】演示指针变量的引用. 】swap1(int x,int y),主函数调用方式为 ,主函数调
用方式为:swap1(a,b); 值传递, , 的值以及 的值以及pa, 指针变量都不受影响 指针变量都不受影响. 值传递,a,b的值以及 ,pb指针变量都不受影响.
swap2(int *x,int *y),主函数调用方式为 ,主函数调用方式为:swap2(pa,pb); 形参是指针变量,实参也是指针变量. 形参是指针变量,实参也是指针变量.交换算法中采用指向运算 是对应相同的数据a, , 符*,所以 ,*y和pa,pb是对应相同的数据 ,b,最后函数实 ,所以*x, 和 , 是对应相同的数据 现了交换. 现了交换.
swap3(int *x,int *y),主函数调用方式为 ,主函数调用方式为:swap3(pa,pb); 形参是指针变量,实参也是指针变量. 形参是指针变量,实参也是指针变量.交换算法中临时指针变量 虽然把x, 交换 交换, 没有交换, 虽然把 ,y交换,但pa,pb没有交换,所以对应的数据 ,b也没 , 没有交换 所以对应的数据a, 也没 有受到影响,交换是失败的. 有受到影响,交换是失败的.
《C语言程序设计(第三版)》-电子教案-丁亚涛-7073
【例8-1】演示指针变量的引用. 】swap3()分析图 分析图
《C语言程序设计(第三版)》-电子教案-丁亚涛-7073
8.3.3 指针的算术运算和关系运算算术运算指针变量的++和 运算 运算. 指针变量的 和--运算. 指针加,减整数运算. 指针加,减整数运算. 指向同一数组不同元素的指针相减运算. 指向同一数组不同元素的指针相减运算. 假定有: 假定有:char str[100]= "Hello World"; char *p=str,*q;
《C语言程序设计(第三版)》-电子教案-丁亚涛-7073
8.3.3 指针的算术运算和关系运算p++
q=p+3;
字符W可以用 表示, 字符 可以用str[6]表示,也可以用 可以用 表示 也可以用p[5],q[2]表示 , 表示
《C语言程序设计(第三版)》-电子教案-丁亚涛-7073
8.3.3 指针的算术运算和关系运算关系运算 关系运算是比较指针大小的运算. 关系运算是比较指针大小的运算.两个指针 相等说明指向同一存储单元. 相等说明指向同一存储单元. p<q
指针不能进行如下等运算: 指针不能进行如下等运算:p+q p*q p/q ……
《C语言程序设计(第三版)》-电子教案-丁亚涛-7073
8.4 指针与数组8.4.1 指针与字符数组char str[100]= "Hello World"; char *p=str; 字符w可以有如下多种表示形式 可以有如下多种表示形式: 字符 可以有如下多种表示形式str[6] *(str+6) p[6] *(p+6)
《C语言程序设计(第三版)》-电子教案-丁亚涛-7073
【例8-2】演示指针和数组的关系. 】演示指针和数组的关系.#include <stdio.h> void main() { char str[100]="123456789"; char *p=str;char des[100],*q; while(*p != NULL) printf("%c",*p++); /*顺序输出 顺序输出*/ 顺序输出 printf("\n"); while(--p >= str) printf("%c",*p); /*逆序输出 逆序输出*/ 逆序输出 printf("\n"); p=str;q=des; while(*p != NULL) *q++ = *p++; /*字符串拷贝 字符串拷贝*/ 字符串拷贝 *q=NULL; printf("%s\n",des); return 0; }
《C语言程序设计(第三版)》-电子教案-丁亚涛-7073
8.4.2 指针与其他类型数组【例8-3】演示指针和整型数组的关系,数组动态分配 】演示指针和整型数组的关系, 内存. 内存.#include <stdio.h> void main() { int a[10] = {1,2,3,4,5,6,7,8,9,10}; int *p=a,*q=p+9; int s; for(s = 0 ; q >= p ; q--) s = s + *q; printf("s=%d\n",s); }
…… 此处隐藏:2163字,全部文档内容请下载后查看。喜欢就下载吧 ……- 基于PLC控制的航空电镀生产线自动输送
- 中考预测课内外文言文对比阅读2
- 2018-2023年中国商业智能(BI)产业市场
- 中国金融体制改革研究2011new
- 外窗淋水试验方案
- 精益生产(Lean Production)
- 学校安全事故处置和信息报送制度
- Chapter 5 Human Resources Management
- 【小学数学】人教版小学六年级上册数学
- 初中数学解题方法与技巧
- 山东省创伤中心建设与管理指导原则(试
- 函数与数列的极限的强化练习题答案
- 10分钟淋巴按摩消脂
- 网络应急演练预案
- 服装设计入门基础知识
- 初二数学分式计算题练习
- (人教新课标)高二数学必修5第二章 数列
- 最新自主创业项目
- 北京大学 无机化学课件 4第4章 配合物
- 贸易公司业务管理制度




