一. 含义
1.&a是变量a的地址,也称变量a的指针
2.指针变量是存放地址的变量(或指针)
3.指针变量的值是一个地址(或指针)
4.指针变量也可称为地址变量,它的值是地址
5.数组名是一个地址,是数组首元素的地址,也可以说,数组名是一个指针,是数组首元素的指针
6.函数名是一个指针,(指向函数代码区的首字节),也可以说函数名是一个地址(函数代码区首字节的地址)
7.函数的实参如果是数组名,传递给形参的是一个地址,也可以说,传递给形参的是一个指针
二.
指针型存储单元是专门用来存放地址的,指针型数据的存储形式就是地址的存储形式;还有注意指向。所以,一个地址型的数据实际上包含3个信息:
1.表示内存编号的纯地址
2.它本身的类型,即指针类型
3.以它为标识的存储单元中存放的是什么类型的数据,即基类型。
三.区别指针和指针变量
1.指针就是地址,指针变量是用来存放地址的变量
2.指针是类型名,指针的值是地址 (错)
指针变量的值是一个地址,地址本身就是一个值
四.指向
与指针变量的基类型相同的数据的地址才能存放在相应的指针变量中
int a, * p; //p是int *型的指针变量,基类型是int型
float b;
p=&a; //a是int型,合法
p=&b; //b是float,类型不匹配
void * 指针是一种特殊的指针,不指向任何类型的数据。如果需要用此地址指向某类型的数据,应先对地址进行类型转换。
五.有关指针变量的归纳比较
七.指针运算
1.指针变量加减一个整数
将该指针变量的原值(一个地址)和它指向的变量所占用的存储单元的字节数相加减。
2.指针变量赋值
p=&a;(将变量a的地址赋给p)
p=array;(将数组array首元素地址赋给p)
p=&array[i];(将数组array第i个元素的地址赋给p)
p=max; (max为已定义的函数,将max的入口地址赋给p)
p1=p2; (p1和p2是基类型相同指针变量,将p2的值赋给p1)
3.两个指针变量可以相减
如果两个指针变量都指向同一个数组中的元素,则两个指针变量值之差是两个指针之间的元素个数。
4.两个指针变量比较
若两个指针指向同一个指针的元素,则可以进行比较。指向前面的元素的指针变量“小于”指向后面元素的指针变量。不指向同一数组则比较无意义。
八.指针变量可以有空值
表示该指针变量不指向任何变量。
p=NULL;
NULL是一个符号变量,代表整数0。它使p指向地址为0的单元。