?/p>
3
?/p>
指针
一?/p>
目的和要?/p>
1
?/p>
掌握指针的概念和定义方法?/p>
2
?/p>
掌握指针的操作符和指针的运算?/p>
3
?/p>
了解指针与数组的关系?/p>
4
?/p>
了解指针与字符串的关系?/p>
5
?/p>
学习指针在函数中的应用?/p>
二.
相关知识
1
、指针变量的定义和初始化
指针变量是用来存放其它变量地址的变量。其定义格式如下?/p>
存储类型
数据类型
*
指针变量?/p>
1[=
初?/p>
1]
?/p>
?/p>
说明
:
?/p>
相同类型的指针变量和普通变量可以放在一起说明?/p>
?/p>
指针变量和普通变量完全一?/p>
,
由它的定义位置决定指针的作用域和生命期?/p>
?/p>
要使一个指针变量指向一个确定的变量
,
必须将该变量的地址赋给指针变量?/p>
?/p>
一个指针只能指向同一个类型的变量?/p>
2
?/p>
&
运算符和
*
运算?/p>
?/p>
C
语言中提供了两个有关指针的运算符?/p>
?/p>
&
运算符称为“取地址运算符?/p>
?/p>
?/p>
运算符称为“指针运算符?/p>
,也称为“间接运算符?/p>
,如?/p>
*p
代表
p
所指向的变量?/p>
3
、使用指针运算符应注意的问题
?/p>
指针变量定义中的?/p>
*
”与?/p>
*
”运算符的区别?/p>
指针变量定义中的?/p>
*
”不是运算符,它只是表示其后的变量是一个指针类型的变量?/p>
而对于语句?/p>
*p=5;
?/p>
,其中的?/p>
*
”是指针运算符?/p>
*
?/p>
?/p>
?/p>
*p
”代?/p>
p
指向的变量?/p>
?/p>
&
运算符与
*
运算符是互逆的。如?/p>
y=x; y=*&x;
两个语句是等效的?/p>
4
、对指针变量的操?/p>
在定义了一个指针变量之后,如:
int *p, a;
就可以对该指针进行各种操作?/p>
?/p>
给一个指针变量赋予一个地址值,如:
p=&a;
?/p>
?/p>
输出一个指针变量的值,
printf(?o?p);?/p>
?/p>
访问指针变量所指向的变量,
如:printf(?d?*p);?/p>
5
、指向数组的指针变量的使?/p>
数组名本身可以看成是该数组的指针,但它的位置是固定的。如果定义一个指针变量,
并把这个指针指向该数组的起始地址?/p>
那么通过对指针的运算?/p>
就可以完成对数组的访
问?/p>
如,引用一维数组元?/p>
(int
a[10], *p=a;)
的方法有?/p>
?/p>
下标法,
如:
a[i], p[i]
?/p>
?/p>
地址法,
如:
*(a+i), *(p+i)
?/p>