您的位置:首页 > 其它

二十八、数组、指针和字符串:指针的赋值和指针运算(指针常量,常量指针)

2015-04-27 10:32 267 查看
1、指针的赋值
当声明一个指针后没有对其赋初值,指针变量没有存储确定的地址,而是一个随机整数。如果这时引用它所指的值可能会发生意想不到的问题(如修改了它指向系统重要数据)。所以我们要先赋值再引用。
需要注意的是:赋值给指针变量的值必须是地址常量(如数组名),地址变量 。但一定不能是非0整数。
当赋值为0时表示该指针是一个空指针。因此在未确定赋值给某指针时,我们一般将其设为空指针(避免其随机值访问到了重要数据)。

1、指向常量的指针。(常量指针)即指针指向(即存储地址)可以改变,但所指内内容不能修改。
const char* p=”abcd”;
char c[]=”defg”;
*p=’a’; //错误 不能改变p所指对象
p=c; //正确

2、指针常量(指针本身值不能改变)
int i=3,j=4;
int* const p=&i;
p=&j; //错误,不能改变指针常量的值
3、void指针。特殊指针,可以任意对象为其赋值。
void* p;
int a;
int *p1;
p=&a; //void类型指针指向整型变量a
p1=(int*)p; //强制转换将void类型赋值给int型指针p1
这里对于常量指针和指针常量总有点模糊不清的概念。。。用一个比较死板的方法,避免多次的描述混淆。
常量指针(指向常量的指针,修饰的是常量对象)。指针常量(显然修饰重点在指针)
对应关系如下
常量------const
指针-------int* cha*  等等只要带*符号的
于是常量指针表示为
const-----------int*-------     //谁在前重点就是谁,不能改变,如这里常量对象不能变

指针常量
int*---------const--------      //指针描述符在前,指针是重点,指针本身不能改变
 
2、指针运算
因为指针也是一种数据类型。也可以参加一些运算。包括赋值运算、算术运算和关系运算。
如 int*p;
p+3;  //表示p所指地址后第三个数据地址。
++,--表示所指地址下一个或前一个地址。
指针的关系运算指同类型的关系运算,不同类型指针之间关系运算没有任何意义。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  指针
相关文章推荐