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