第8章指针1.ppt_第1页
第8章指针1.ppt_第2页
第8章指针1.ppt_第3页
第8章指针1.ppt_第4页
第8章指针1.ppt_第5页
已阅读5页,还剩24页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第8讲 指针,本讲主要内容 一、指针概述 二、指针变量的定义和使用 三、一维数组与指针 四、二维数组和指针 五、字符串和指针,一、指针概述,程序中: int i=10; float k=5.6;,内存中每个字节有一个编号-地址,10,5.6,1.变量与地址,指针,变量的内容,变量的地址,2.指针的概念,变量的地址称为指针。 或者说指针就是地址。,例 i=3; -直接访问,2000,3,3. 直接访问,通过变量名直接使用变量数据。,4. 间接访问,定义一个变量p,存放i的地址,通过p访问i。,5.指针变量的概念,专门用来存放指针的一类变量,专门用来存放变量地址的变量,指针变量,变量,地址,内容,

2、i,2000,3,P,2004,2000,指向,二、指针变量的定义和使用,一般定义格式: 数据类型 *指针变量名; 如: int *p ; float *q1,*q2;, 指针定义中,“*”号不能省略,它是指针说明符。,1. 指针变量的定义,指针定义说明:, 允许指针变量和其他变量在一个语句中定义。,int m,n,*p,*q;,指针变量所指向的变量的类型。, 指针变量的初始化 例如: int m=196,*p= p=,3. 指针运算符, p=,4. 指针变量的应用,存内容:*p=100;,例8-1 指针运算举例。 main() int a,b; int *p1,*p2; a=100; b=1

3、0; p1= for(i=0;iaj+1) t=aj; aj=aj+1; aj+1=t; for(i=0;iN;i+) printf(%d ,ai); ,返回,#define N 10 main() int aN,i,j,t,*p=a; for(i=0;i*(p+j+1) t=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=t; for(i=0;iN;i+) printf(%d ,*(p+i); ,#define N 10 main() int aN,i,j,t,*p; for(p=a;p*(p+1) t=*p; *p=*(p+1); *(p+1)=t; for(p=a;p

4、a+N;p+) printf(%d ,*p); ,int a34;,数组a,行数组元素,列元素,a00,a01,a02,a03,a10,a11,a12,a13,a20,a21,a22,a23,a00,a01,a02,a03,a10,a11,a12,a13,a20,a21,a22,a23,指针和二维数组元素的对应关系,四、二维数组和指针,int *p; p= ;,?,a0,p,p,例11-5,a0,a0为一维数组名,是一个地址常量,指向数组首元素。,a0,形式存放,实际存储,main() int a34=3,17,8,11,66,7,8,19,12,88,7,16; int *p,max; fo

5、r(p=a0,max=*p;p max) max=*p; printf(MAX=%dn,max); ,例11-5 求二维数组元素的最大值。,3,17,66,88,五、指针和字符串,字符串的处理方法有两种: 1. 一种方法是使用字符数组处理字符串,相关知识在第7单元已进行了专门介绍; 2. 另一种方法是使用字符指针处理字符串,这是C语言中更为常用的一种方法。它首先通过一定的方式,用字符指针指向字符串, 然后通过字符指针来访问字符串存贮区域,从而实现对字符串的操作。,使字符型指针指向字符串的方法通常有两种: 通过定义指针变量时初始化指向字符串。 例如: char *p=a string; a st

6、ring是一个字符串常量,它保存在计算机的一个内存区域。用该字符串对字符指针变量p初始化,就是把字符串首字符的地址赋给p。, 利用赋值语句使指针变量指向字符串。例如: char ch20,*s; char *str1=ch,*str2; s=string ; str2=str1;,例11-5 分析下列程序的输出结果 main() char *s1=very good!,*s2; puts(s1); s2=s1+5; puts(s2) ,例11-6 用指针复制字符串。 main() char a=“abcdefg; char b10,*p1,*p2; int i; for(p1=a,p2=b;*

7、p1!=0;p1+,p2+) *p2=*p1; *p2=0; printf(string a is: %sn,a); printf(string b is: %sn,b); ,a,b,c,d,e,f,g,0,指针基础-小结,1指针就是变量的地址,专门用来保存指针的变量称为指针变量,通过指针变量就可以实现对其他变量的访问。指针变量可以指向任何一种数据类型。,作业:教材11.3 11.5,2使用如下形式定义指针变量: 数据类型 *指针变量名;,3当用指针指向一维数组时,访问数组元素的方法变得灵活多样,既可以使用下标法,也可以使用指针法。 若p是指向一维数组a的指针: 则数组元素可表示为:ai 、*(p+i)、pi、*(a+i); 该元素地址可表示为:&ai、p+i、a+i。,5使用字符指针处理字符串是C语言中常用的一种方法。它首先通过一定的方式,用字符指针指向字符串, 然后通过字符指针来访问字符串存贮区域,从而实现对字符串的操作。,4. 对于一个MN的二维数组a,若p是指向a0的指针,则数组元素aij可用指针表示为*( p+i*N+j)或pi*N+j,该元素地址可以表示为:&aij

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论