第10章 指针和指针变量.pptVIP

  • 1
  • 0
  • 约1.53万字
  • 约 66页
  • 2018-05-03 发布于四川
  • 举报
第10章 指针和指针变量.ppt

第一节 指针概述 第二节 指针变量 第三节 指针与数组 第四节 指针与字符串 一、地址 在程序中所定义的变量,编译系统会根据变量的类型,分配一定长度的存储空间。内存中每一个字节有唯一编号。如: int a 2个字节 float b 4个字节 char c 1个字节 二、访问变量的方式 直接访问方式 按变量的名字存取变量的值 。 例如:printf(%f,b); scanf(“%d”,a); 间接访问方式 按变量的地址存取变量的值。 例如:假设变量pa的地址为1000,用变量pa来存放变量a的地址a,此时pa的值为2000。如果要得到a的值,可以先访问变量pa,得到pa的值为2000(变量a的地址),再通过地址2000找到所指存储单元中的值(a的值),见图。 pa(1000) a 三、指针 一个变量的地址称为该变量的指针。如地址2000是变量a的指针,2002是变量b的指针。 四、指针变量 如果有一个变量专门用来存放另一个变量的地址(即指针),称为指针变量。如pa是一个指针变量,pa中的值为指针。 注意:指针和指针变量的概念 一、指针变量的定义 二、指针变量的引用 三、指针作为函数的参数 一、指针变量定义 类型说明符 *标识符; 例如: int *p1,*p2; int—p1,p2是指向整型变量的指针变量。 *—指针标记。 p1,p2—指针变量名。 说明 指针可以指向任何类型的对象。 在定义了一个指针变量p1,p2以后,系统为这个指针变量分配一个存储单元(一般为2个字节)用来存放地址。 例如 int a,b; int *p1,*p2; p1=a; p2=b; 二、指针变量的引用 :取变量地址运算符 *:“指向”运算符或称“间接访问”运算符 例如: a为变量a的地址。 *p为指针变量p所指向的变量。如果有p=a,则*p就是a。 例10-1 main( ) {int a,*pa; float b,*pb; a=10;b=1.5; pa=a; pb=b; printf(%d,%f\n”,a,b); printf(%d,%f\n”,*pa,*pb); } 说明: 执行了pa=a;后,*pa的含义? 与a相同。 *a的含义? 即a,*pa。 (*pa)++相当于 a++ *pa++ 相当于*(pa++),即先取*pa,即a的原值,之后pa自增,不再指向a了。 例10-2指针变量应用的例子,由大到小输出a,b。 main() {int a,b,*p,*pa,*pb; a=3;b=6; pa=a; pb=b; if(ab) { p=pa; pa=pb; pb=p;} printf(%d%d\n,a,b); printf(%d%d\n,*pa,*pb); } 三、指针变量作为函数的参数 函数的参数也可以是指针类型,实际参数可以是地址常量或指针变量,形式参数则为指针变量。这种传递也是值传递,即将实参指针变量的值传给对应的形参。但是由于指针变量存放的是地址值,作为函数的参数来进行传送的是实参的值--变量的地址。 例10-3 用函数来实现两个数由大到小顺序输出。 void swap(p1,p2) int *p1,*p2; { int temp; temp=*p1; *p1=*p2; *p2=temp; } main( ) { int a=3,b=5; int *pa,*pb; pa=a; pb=b; if(ab) swap(pa,pb); printf(%d,%d\n,a,b); printf(%d,%d\n,*pa,*pb); } 例10-3 用函数来实现两个数由大到小顺序输出。 void swap(p1,p2) int *p1,*p2; { int temp; temp=*p1; *p1=*p2; *p2=temp; } main( ) { int a=3,b=5; int *pa,*pb; pa=a; pb=b;

文档评论(0)

1亿VIP精品文档

相关文档