第8章:C语言等级考试指针资料精要.pptVIP

  • 8
  • 0
  • 约6.05千字
  • 约 39页
  • 2016-05-27 发布于湖北
  • 举报
第8章:地址和指针 p-92 8.1 变量的地址和指针 应该知道: 计算机的内存是以字节为单位的一片连续的存储空间, 每一个字节都有一个编号,这个编号就称为内存地址。 变量的地址: 变量所占存储单元首字节的编号。 什么是指针? 指针和概念 变量的地址:变量所占存储单元的首字节的编号 指 针:指针就是变量地址的形象名 找人…… 8.2 指针变量的定义和指针变量的基类型 p-93 定义指针变量的一般形式如下: 类型名 *指针变量名1,*指针变量名2,…; 例如: int *pi,*pj; double *pd; char *s1, *s2; 为什么指针变量要有“基类型”呢? 在8.4.2中将要涉及到指针的移动,也就是要对地址进行增减运算,这时指针移动的最小单位是一个存储单元,而不是1个字节。 8.3 给指针变量赋值 p-94 8.3.1 给指针变量赋地址值 1. 通过求地址运算()获得地址值 注意: (1) 是单目运算符 (2) 的运算对象只能是变量 例: x i 3 (x+3) int x=8,*p; 例: 若有以下定义: int x=8, *p,*q; p=x; q=x; 2. 通过指针变量获得地址值 p-95 若有以下定义: int k=10, *q,*p; 则赋值语句: p=k; q=p; 8.3.2 给指针变量赋“空值” p-95 除了给指针变量赋地址值外,还可以给指针变量赋NULL值, 例如: p=NULL; p = \0;   或  p=0; 8.4 对指针变量的操作 p-95 8.4.1通过指针来引用一个存储单元 C语言中提供了一个称作“间接访问运算符” (也称指针运算符)的单目运算符: * ”。 * : 求内容或(值)运算符 注意: (1) * 是单目运算符 (2) * 的运算对象只能是地址 例:*x *(x+3) *x *i *x == x 8.4 对指针变量的操作 p-95 有以下定义语句: main( ) { int *p,x=10; p=x ; printf(“%d,%d,%d”,x , *x,*p); } 例 8.1用指针指向两个变量,通过指针运算选出值小的那个数。 main( ) { int a,b,min,*pa, *pb,*pmin; pa=a; pb=b; pmin=min; scanf(“%d%d”,pa,pb); printf(“a=%d b=%d\n”,a,b); *pmin=*pa; if (*pa*pb)*pmin=*pb; printf(“min=%d\n”,min); } 当运行程序时输入:41 32CR a=41 b=32 min=32 程序举例1 main( ) { int x=8,*p; p=x; x=x+10; printf(“%d,%d”,x,*p); } 程序举例1 main( ) { int x=8,*p; p=x; x=x+10; printf(“%d,%d”,x,p); } 程序举例 2 main( ) { int x=8,*p; p=x; *p=x+10; printf(“%d,%d”,x,*p); } 程序举例 2 main( ) { int x=8,*p; p=x; *p=x+10; printf(“%d,%d”,x,p); } 程序举例 3 main( ) { int x=8,y=20,*p; p=x; x=x+10; p=y; printf(“%d,%d,%d”,x,y,*p); } 程序举例 4 main( ) { int x=8,*p,*q ; p=x; x=x+10; q=x; printf(“%d,%d,%d”,x,*p,*q); } 练习 5 main( ) { int x=8,*p,*q ; p=x; x=x+10; q=x; printf(“%d,%d,%d”,x,*p,*q); *p=30; printf(“%d,%d,%d”,x,*p,*q); } 8.4.2 移动指针 p-97 所谓移动指针就是对指针变量进行加上或减去一个整数、或通过赋值运算,使指针变量指向相邻的存储单元。因此

文档评论(0)

1亿VIP精品文档

相关文档