可以存储地址的变量称为指针。
指针的声明和初始化:
类型 *指针名; int *point;
上面声明了一个整形指针,但没初始化,没有初始化的指针是非常危险的,所以应总是在声明指针的时候对
它进行初始化
int *point = NULL; NULL是标准库里面定义的一个常量,对于指针他表示0, NULL是一个不指向任何内存位置的值,这表示不指向任何对象的指针,不会以外的覆盖内存。
如果用已声明的变量地址初始化pointer 变量。可以使用寻址运算符& 例如:
int number = 10;
int *point = &number;
指针的声明没有什么特别之处,可以用相同的语句声明一般的变量和指针,
double value, *pVal, fnum;
声明了两个double变量value 和 fnum, 还有一个指针变量 *pVal
---------------------------------
通过指针来访问值:使用间接运算符*可以访问指针所指的变量值,这个运算符也称为取消引用运算符,因为它用于取消对指针的引用,假设声明以下的变量:
int number = 15;
int *point = &number;
int result = 0;
result = *point + 5;
----------
指向常量的指针
声明指针时,可以使用const关键字指定,该指针指向的值不能改变
long value = 9999L;
const long *pvalue = &value;
把pvalue 指向的值声明为const,所以编译器会去检测是否有语句试图修改pvalue指向的值,并将这些语句标记为错误,自我理解就是你可以用其他手段来改变指针变量指向的值,但不能是指针的方式来改变。
例子:
long value = 9999L;
const long *pValue = &value;
value = 8888L;
*pValue = 7777L; error (不允许)
-----------
常量指针可以使指针中存储的地址不能改变,此时,在指针声明中使用const关键字的方式略有区别,下面的
语句可以使指针总是指向相同的对象。
int count = 43;
int *const pcount = &count; 这个语句指定该指针存储的值(即地址)是不可改变的。
int item = 67;
pcount = &item; error
但是仍然可以使用pcount, 仍可以改变pcount指向的值。
*pcount = 345;
-----------------
可以创建一个常量指针,它指向一个常量值:
int item;
const int *const pitem = &item;
pitem 称为一个指向常量的常量指针,所以所有的信息都是固定不变的,不能改变存储在pitem中的地址,也不能使用pitem改变它指向的内容。
阅读(922) | 评论(0) | 转发(0) |