1、问问 题题 引引 出出1.1.前面几章研究的都是通过变量名访问数据前面几章研究的都是通过变量名访问数据2.2.通过变量名访问内存叫通过变量名访问内存叫直接访问直接访问 这就是第这就是第6 6章要研究的问题章要研究的问题指针指针3.3.内存有内容和地址之分内存有内容和地址之分 4.C4.C语言允许通过地址来访问内存语言允许通过地址来访问内存 主主 要要 内内 容容6.1 6.1 概念概念目的要求目的要求复习思考题复习思考题6.2 6.2 指针与变量指针与变量6.3 6.3 多级指针多级指针6.1 6.1 指针的概念指针的概念1.1.指针常量指针常量(1)(1)内存中一个有效的地址称为内存中一个有
2、效的地址称为指针常量指针常量(2)(2)变量的地址就是变量的地址就是指针常量指针常量(3)(3)变量名前加变量名前加&获取地址获取地址,使用,使用%p%p输出输出2.2.指针变量指针变量(1)(1)只能用来存储地址的变量叫只能用来存储地址的变量叫指针变量指针变量,简称为简称为指针指针 (2)(2)指针变量也有自己的指针变量也有自己的地址地址(3)(3)要获得指针变量的地址同样使用取地址运算要获得指针变量的地址同样使用取地址运算(&)(&)(4)(4)若把一个变量的地址赋给指针若把一个变量的地址赋给指针,就说指针就说指针指向了变量指向了变量6.2 6.2 指针与变量指针与变量指针的数据类型是它指
3、针的数据类型是它指向变量指向变量的数据类型的数据类型1.1.定义格式定义格式数据类型标识符数据类型标识符 *指针变量名指针变量名;2.2.指针的初始化指针的初始化(1 1)在定义时赋值)在定义时赋值举举例例intint a;a;/*定义整型变量定义整型变量a a*/intint *p=&a;p=&a;/*定义指针变量定义指针变量p p并使其指向了并使其指向了a a*/举举例例intint a=-123;a=-123;/*定义整型变量定义整型变量a a并初始化为并初始化为-123-123*/intint *p,p,*q;q;/*定义了指针定义了指针 p p和和q q*/p=&a;p=&a;/*为
4、为p p初始化,初始化,p p指向了指向了a a*/q=p;q=p;/*为为q q初始化,初始化,q q也指向了也指向了a a*/(2 2)在定义后赋值)在定义后赋值(3)(3)指针的类型必须与变量的类型一致指针的类型必须与变量的类型一致举举例例doubledouble x=-1.5;x=-1.5;intint *px=&x;px=&x;/*错误错误!指针与变量的类型不一致指针与变量的类型不一致 */3.3.用指针处理数据用指针处理数据(1)(1)通过对指针实施通过对指针实施间接运算间接运算(*)引用引用变量中的数据变量中的数据(2)(2)注意事项注意事项间接运算间接运算(*)的对象只能是的对
5、象只能是地址量地址量举举例例intint a;a;intint *pa=&a;pa=&a;*papa=8;=8;/*通过指针通过指针p p给给a a存了存了8 8*/*&a&a=100;=100;/*通过指针常量通过指针常量&a&a给给a a存了存了100 100*/取地址运算取地址运算(&)(&)与间接运算与间接运算(*)互为逆运算互为逆运算举举例例intint a;a;intint *pa=&a;pa=&a;/*星号是标识指针类型的语法符号星号是标识指针类型的语法符号 */则以下的关系成立则以下的关系成立:*pa=pa=*&a a&*pa=pa=&*&a=pa=&aa=pa=&a6.3 6
6、.3 多级指针(自学)多级指针(自学)1.1.概述概述(1)(1)指针可以指向变量也可以指向指针变量指针可以指向变量也可以指向指针变量 (2)(2)指向变量的指针叫指向变量的指针叫一级指针一级指针(3)(3)指向一级指针的指针叫指向一级指针的指针叫二级指针二级指针(4)(4)指向二级指针的指针叫指向二级指针的指针叫三级指针三级指针(5)(5)指向指针的指针叫指向指针的指针叫多级指针多级指针2.2.注意事项注意事项举举例例int a=10;int a=10;int int*p;p;/*定义一级指针定义一级指针p p*/int int*pp;pp;/*定义二级指针定义二级指针pp pp*/int
7、int*ppp;ppp;/*定义三级指针定义三级指针ppp ppp*/p=&a;p=&a;/*一级指针一级指针p p指向变量指向变量a a*/pp=&p;pp=&p;/*二级指针二级指针pppp指向一级指针指向一级指针p p*/ppp=&pp;ppp=&pp;/*三级指针三级指针pppppp指向二级指针指向二级指针pp pp*/(1)(1)定义定义几级指针几级指针就要在指针名前加就要在指针名前加几个几个*(2)(2)只有只有同类型同类型同级别的同级别的指针间才可以相互赋值指针间才可以相互赋值 (3)(3)几级指针就要实施几次间接运算几级指针就要实施几次间接运算3.3.一个程序例子一个程序例子目
8、目 的的 要要 求求1.1.理解指针常量和指针变量的含义理解指针常量和指针变量的含义2.2.掌握指针定义和初始化的方法与注意事项掌握指针定义和初始化的方法与注意事项3.3.掌握使用指针处理单个变量的方法掌握使用指针处理单个变量的方法4.4.掌握多级指针的含义、定义方法和注意事项掌握多级指针的含义、定义方法和注意事项5.5.掌握使用多级指针处理数据的方法掌握使用多级指针处理数据的方法复习思考题复习思考题说明:题目前面的说明:题目前面的*代表问题的重要程度代表问题的重要程度*2.2.如何定义指针如何定义指针?*3.3.如何让指针指向变量如何让指针指向变量?*1.1.解释下列名词解释下列名词*4.4.如何通过指针处理数据如何通过指针处理数据?*5.5.如何定义多级指针如何定义多级指针?*6.6.如何通过多级指针处理数据如何通过多级指针处理数据?(1)(1)指针常量指针常量 (2)(2)指针指针 (3)(3)多级指针多级指针