高二高教版C语言程序设计教程(第5版)课件第9章指针

2022-12-02
| 30页
| 109人阅读
| 0人下载
普通

内容正文:

第9章   指 针 9.1 指针变量 9.2 数组指针变量 9.3 指针数组和二级指针变量 9.1.1变量的指针和指针变量 内存地址 变量的地址 int a=5,b=10; 2012 2010 3000 变量a 变量b 5 10 变量p 2010 一个存储单元首字节的编号称为该存储单元的“地址”,也就是相应变量的地址 在一个地址所标记的存储单元中存放的数据称为该存储单元的“内容”。 直接访问 间接访问 9.1.1变量的指针和指针变量 2012 2010 3000 变量a 变量b 5 10 变量p 2010 指针、变量的指针和指针变量 指针就是“内存单元的地址” 变量的指针就是“变量的地址”,它指向一个变量对应的内存单元。 保存指针(地址)数据的变量称为指针变量。 间接访问 9.1.2 指针变量的定义和初始化 定义指针变量的一般形式为: 类型标识符 *指针变量名; 如: int *ip; char *cp; 指针变量也可进行初始化。 例如:int a ; int *p=&a; &a a p 9.1.3 指针变量的引用 指针变量同普通变量一样,使用之前不仅要定义,而且必须赋予具体的值。 两个有关的运算符: 取地址运算符“&”:形式为: &变量名 功能:得到变量的地址,为一指针。只能作用于变量。 例如: &x, &a[5] … 等是正确的应用 &25, &(k+1) … 等是错误的应用 指针运算符(或称“间接访问” 运算符)。 一般形式为: *指针变量名 如:*ip表示指针变量ip所指向的变量。 【例】指针运算符的示例。 main( ) { int a=3,b=6, *pa=&a,*pb=&b; printf("a=%2d,b=%2d ",a,b); printf("*pa=%2d,*pb=%2d",*pa,*pb); } int a=3,b=6; int *pa=&a,*pb=&b; 说明:“&”和“*”均为单目运算符,优先级别相同,且都具有右结合性. &*pa与&a是等价的。 *&a与a是等价的。 2.对指针变量的赋值操作 可以通过赋值语句将一个有效的内存地址赋给已定义的指针变量 int a,*pa; pa=&a; *pa=3; 说明:指向相同类型的指针变量之间可以相互赋值。 int a=3,*pa=&a,*pb; pb=pa; *pb+=1; int *p; p=NULL; 或:p=0; a+=1; a=3; NULL为系统定义的符号常量.代表整数0. main() {  int a,b,c,*pmax,*pmin;  printf("input three numbers: ");  scanf("%d%d%d",&a,&b,&c);  if(a>b) { pmax=&a;pmin=&b; } else { pmax=&b; pmin=&a; } if(c>*pmax) pmax=&c; if(c<*pmin) pmin=&c; printf("max=%d min=%d ",*pmax,*pmin); } 【例】利用指针变量求出三个数中的最大值和最小值。 a 10 15 3 b c &b &a pmin pmax a 10 15 3 b c &b &c pmin pmax 【例】 使两个指针变量交换指向。 main() { int a1=10, a2=20; int *p1, *p2, *p; p1=&a1; p2=&a2; printf(“ %d,%d,&d,&d ”,*p1,*p2,a1,a2); p=p1; p1=p2; p2=p; printf(“ %d,%d,%d,%d ”,*p1,*p2,a1,a2); } 10,20,10,20 20,10,10,20 【例】 交换两个指针变量所指向的变量的值。 main() { int a1=10, a2=20, t; int *p1, *p2; p1=&a1; p2=&a2; printf(“ %d,%d,%d,%d ”,*p1,*p2,a1,a2); t=*p1; *p1=

资源预览图

高二高教版C语言程序设计教程(第5版)课件第9章指针
1
高二高教版C语言程序设计教程(第5版)课件第9章指针
2
高二高教版C语言程序设计教程(第5版)课件第9章指针
3
高二高教版C语言程序设计教程(第5版)课件第9章指针
4
高二高教版C语言程序设计教程(第5版)课件第9章指针
5
高二高教版C语言程序设计教程(第5版)课件第9章指针
6
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。