chap07_指针(一)

上传人:豆浆 文档编号:48597610 上传时间:2018-07-17 格式:PPT 页数:24 大小:916KB
返回 下载 相关 举报
chap07_指针(一)_第1页
第1页 / 共24页
chap07_指针(一)_第2页
第2页 / 共24页
chap07_指针(一)_第3页
第3页 / 共24页
chap07_指针(一)_第4页
第4页 / 共24页
chap07_指针(一)_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《chap07_指针(一)》由会员分享,可在线阅读,更多相关《chap07_指针(一)(24页珍藏版)》请在金锄头文库上搜索。

1、2012014 4. .07.1407.14高级语言程序设计第07章 指针内容提要l指针的定义和使用方法l指针和数组的关系用指针访问数组l指针在函数中应用的方法作为形参传地址作为返回值l动态内存的分配和使用方法一维动态空间二维动态空间2C程序设计中使用指针可以: v使程序简洁、紧凑、高效 v有效地表示复杂的数据结构 v动态分配内存 v方便地使用字符串 v有效而方便地使用数组 v直接访问内存地址 v调用函数时能获得1个以上的结果 v指针的概念比较复杂,使用也比较灵活,是C语言的 一大特点,也是难点。指针是一种数据类型l复习:数据类型C 数 据 类 型基本类型构造类型指针类型空类型 void字符型

2、 char整 型实 型(浮点型)单精度型 float 双精度型 double数组类型结构体类型共用体类型短整型 short长整型 long整型 int枚举类型 enum7.1 指针变量l本节学习导读:指针的基本用法基本概念:指针是一种数据类型,存放的是地址。( 简称:指针就是地址)指针变量的定义指针变量的使用指针变量的运算 地址和指针的概念内存用户数据区变量 i变量 j变量 i_pointer362000200020043010在程序中定义一个变量,在编译时就给 这个变量分配一个内存单元,同时根据 变量的类型决定这个内存单元的大小。 如:int 4字节,double 8字节。内存中每一个字节都

3、有一个编号, 就是“地址”。对每一个变量,它在内存中都有一个 存储位置,这个位置就是该变量的地址, 对变量值的存取是通过地址进行。 在C语言中这个地址被形象化地称为“指针”。指针:一个变量的地址。 指针变量:存放另一变量的地址(即指针)。指针就是地址7l例7.1:变量占用的内存空间由类型决定变量地址为变量占用内存空间的首地址int x=10;printf(“x=%dt%pn“,x, 变量的地址和变量的值7.1 指针变量l本节学习导读:指针的基本用法基本概念:指针是一种数据类型,存放的是地址。( 简称:指针就是地址)指针变量的定义指针变量的使用指针变量的运算9指针变量的定义l指针是一种数据类型l

4、指针变量:专门存放地址数据的变量l定义格式: 基类型标识符 *指针变量名1,*指针变量名2, *指针变量名 n;指针变量指向的 变量类型,基类型指针类型说明符 ,表示定义的变 量是指针类型定义一个指针变量指针变量在使用前必须定义,使其指向特定类型 的变量,指针变量存放地址,必须定义为“指针类型” 。 v定义的一般形式:基类型 *指针变量名; l基类型:用来指定指针变量可以指向的变量的类型。将决定指针移动和运算时的移动量。* :表示该变量为指针类型例 int *p1,*p2;float *q ;static char *name;注意: 1、int *p1, *p2; 与 int *p1, p2

5、; 2、指针变量名是p1,p2 ,不是*p1,*p2 3、指针变量只能指向定义时所规定类型的变量 4、指针变量定义后,变量值不确定,应用前必须先赋值例 int *p1,*p2;: int i,j; 赋 p1= 值 p2=7.1 指针变量 本节学习导读:指针的基本用法 基本概念:指针是一种数据类型,存放的 是地址。(简称:指针就是地址) 指针变量的定义 指针变量的使用 指针变量的运算指针变量的初始化和赋值l初始化int *p= l赋值int *p; /*定义指针变量*/p= /*用变量地址值给指针变量赋值 */p=p2=p1;12*13给指针变量赋值lint a,b,*p; p= p中存放的是变

6、量b的地址, *p与b等价p= p可动态地指向不同内存,从而*p代表不同的变量(只能指向 整形变量)lint b,*p1= p2=p1; 此时p1,p2中存放的都是变量b的地址, *p1,*p2与b等价lint *p=NULL; p为空值。用NULL时必须包含头文件也可以写为:p=0; 或者 p=0;直接访问和间接访问l例7.2 定义整型变量和指向它的指针变量, 输出他们的起始地址和值。int count=10;int *p= l分析:*p 和 pcount 和 lp等价于 等价于 *p=3; b=a; 等价于 b=*p;直接访问间接访问指针的非法使用lint *p;l*p=100;l指针变量

7、使用过程中需要始终关注指针的 指向,避免出现非法使用指针的情况。16有问题吗?7.1 指针变量l本节学习导读:指针的基本用法基本概念:指针是一种数据类型,存放的是地址。( 简称:指针就是地址)指针变量的定义指针变量的使用指针变量的运算* 18l取址运算 有等价关系: (1)p与 (2) *p与m ; (3) (4) * 却是错误错误 的,因为m不代表 地址,l运算:加减一个整数 l(1) 指针加一个整数i,是将当前地址值加上i*sizeof(基类型 ) l(2) 指针减一个整数i,是将当前地址值减去i*sizeof(基类型 ) l(3) 指针变量可以进行+、-运算注意:必须保证结果指针指向应用

8、程 序的数据空间,否则不能间接访问地址值整型值 0x12ff00 5 0x12ff04 6 0x12ff08 7 0x12ff0c 8 0x12ff10 9sizeof(int)=4 pq* 20指针的其他运算lint array10; lint *p1= lint *p2= l关系运算: l p1p2 l逻辑运算 l p1=NULL数组array array0 array1 array2 array9p1p2总结l指针(指针就是地址)的基本用法,如下例所示 :定义:int a=5;int *p,*q;初始化int a=5;int *p=int *q=p;总结赋值:int a=5;int *p,*q;p=q=p;注意:指针只能赋予地址值。总结指针变量的使用:int a=5;int *p=此时:整型变量a与指针变量p的关系是a与 *p等价&a与p等价&与*互为逆运算&*p,就是p*&a,就是a24

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号