常量指针与指针常量的区别
指针常量是指--指针本身是常量。它指向的地址是不可改变的,但地址里的内容可以通过指针改变。它指向的地址将伴其一生,直到生命周期结束。有一点需要注意的是,指针常量在定义时必须同时赋初值。
2.使用方法
写法上的区别:
常量指针:const 在*之前 指针常量:const在*之后。
使用举例:
(1) 常量指针使用:
如 int b, c;
int const *a;
a = &b;
a = &c;
都可以,唯独它指向的内容不能被修改。如:*a=20;这是违法的!错误!
(2) 指针常量使用
如 int a ,b;
int * const p = &a;
表示p是一个常量指针它指向变量a的内存。指针常量不能再用p指向其他变量,如 p = &b; 错误!可以修改指向内存的值,如:* p = 20; 指针常量声明的时候必须像上式那样赋初值。
指针常量也不能释放,用p指向NULL,即
p = NULL;
会在编译时报错
/opt/test/test.c:649: error: assignment of read-only variable `p'
还有一个记住他们不同形式的技巧!看const关键字,他后面的不可修改,如int * const a = &b; 后面是a,则说明a不能修改!
int const * a = &b;后面是*a则说明*a不可被修改!
常量指针 即:
指针指向的值为常量, 但指针本身为变量。
指针常量 即:
指针指向的值为变量, 但指针本身为常量。
char array[]="abcde";
const char *pArray = array; //常量指针 合法 定义时赋值
----------------------------------------------------------------
const char *pArray; //先定义,
pArray = array; //后赋值。 合法
*(pArray+1) = 'B' //非法, 指针指向的值为常量, 不可改变。
==================================================
char array[]="abcde";
char *const pArray = array; //指针常量, 即指针是常量, 必须在定义时赋值。
*(pArray+1) = 'B'; //合法 因为指针常量的值是变量,可以被修改。
char *const pArray; //这里就报错, 指针常量, 即指针是常量, 必须在定义时赋值。
pArray = array; //这里就报错, 指针常量, 即指针是常量, 必须在定义时赋值, 不能拆开赋值
指针常量是指指针指向的是一个常量,也就是说指针指向地址的值是不变的。
比如const int *ptr =0;
广告 您可能关注的内容 |