资源预览内容
第1页 / 共57页
第2页 / 共57页
第3页 / 共57页
第4页 / 共57页
第5页 / 共57页
第6页 / 共57页
第7页 / 共57页
第8页 / 共57页
第9页 / 共57页
第10页 / 共57页
亲,该文档总共57页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
指 针6.2 指针的概念6.3 指针与数组6.4 字符串的指针6.5 指针数组和指向指针的指针6.2.1 地址与指针的概念 6.2.2 指针的定义与引用 6.2 指针的概念指针的概念 指针是变量存放地址的变量 这个地址可以是变量的地址,也可以是复杂 数据类型的地址,如数组,结构体等,也可 以是函数的地址。 指针变量存放了哪个变量的地址就称该 指针指向了这个变量。内存地址1、变量与地址 程序中: int i; float k; 内存中每个字节有一个编号-地址.2000200120022005内存 02003ik编译或函数调用时为其分配内存单元变量是对程序中数据 存储空间的抽象2、数组与地址 地址内存单元整型数组元素a0整型数组元素a1整型数组元素a21233000 3001 3002 3003 3004 3005数组与地址对照表数组名 数据类型 长 度 首地址a 整型 3 3000程序中:int a3=1,2,3;指针与指针变量 .2000200420062005整型变量i 10变量i_pointer200120022003指针:一个变量的地址 指针变量:专门存放变量地址的变量叫2000指针指针变量变量的内容变量的地址指针变量变量变量地址(指针)变量值指向地址存入 指针变量寻址 访问内存单元称为寻址。 直接寻址:通过变量名对内存单元进行存取。 间接寻址:通过指针变量间接存取。指针变量的定义、初始化和引用 (一)、指针变量的定义和初始化 数据类型 *指针变量名1=初值1,; 指针变量的定义和初始化格式 例:指针变量的定义和初始化。int a;int *p=float f1,f10,*p1=int* p;int*p;int * p;int* p, i;注意指针的指向编译器不识别没有明 确指向的指针。但使 用这样的指针可能导 致错误。(二)、指针变量的引用方式 1、直接引用指针变量名使用格式为:指针变量表达式。 这个表达式必须是地址型表达式例如:int i,*p_i, *q;p_i= q=p_i;需要用到地址时,可以直接引用指针变量名。例如:int i,j,*p=scanf(“%d,%d”,p,2、通过指针变量来引用所指向的变量使用格式为:* 指针变量名。在程序中“* 指针变量名”代表它所指向的变量。例如:int i=1,j=2,k,*p=k=*p+j;(三)、取地址运算符与指针运算符 对象数名称运算符运算规则运算对象 运算结果结合性单目前缀取地 址scanf(“%d,%d,%d”,pa,pb,pc);if (*pa*pb)p=pa;pa=pb;pb=p;if (*pa*pc)p=pa;pa=pc;pc=p;if (*pb*pc)p=pb;pb=pc;pc=p;printf(“%dmax) max=*(p+i*5+j);if (*(p+i*5+j)min) min=*(p+i*5+j);ave+=*(p+i*5+j);printf(“max=%dn”,max);printf(“min=%dn”,min);printf(“ave=%fn”,ave/15.0); 例3:输入5个字符串,从中找出最大的字符串并输出。要求用 二维字符数组存放这5个字符串,用指针数组元素分别指向这5个字符串,用一个二级指针变量指向这个指针数组。程序清单如下:main() char a580,*p5,*q,*max;int i;for (i=0;i5;i+)pi=ai;for (i=0;i5;i+)gets(pi);max=q=for (i=1;i5;i+,q+)if (strcmp(*max,*q)0 max=q;puts(*max);
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号