学习目标:
了解常量指针和指针常量
学习内容:
常量指针
通过该指针不可以修改它所指向的存储单元中的值
指针本身即地址可以被修改
常量指针的定义
类型说明符 const 指针变量;
类型说明符表示指针所指向的存储单元中值的数据类型
指针运算符()在关键字const后面
常量指针通常作为函数的形参使用,目的就是子啊函数中不允许通过该常量指针去修改它所指向的存储单元中的值
int a = 10;
int b = 20;
int const *p1 = &a; //指针p1指向a,可以读取a的值但是不能更改a的值
int *p2 = &a;
p2 = 30; //虽然p1不能更改a 的值 但是别的普通指针依旧可以更改a的值
p1 = &b ; // 可以更改指针指向的地址
指针常量
指针本身即地址不可以被修改
通过该指针可以修改它所指向的存储单元中的值
常量指针的定义
类型说明符 *const 指针变量 ;
指针运算符 * 在关键字const前面
通过指向指针常量的二级指针还是可以修改它的值,但是在编译时会出现警告
#include <stdio.h>
int main (void)
{
int a = 10;
int b = 20;
int * const p1 = &a; //指针指向a则不能在指向其他值
// p1 = &b; (错误的指针常量不能改变指向值)
int **p2 = &p1;//定义一个二级指针指向一级指针
*p2 = &b; //通过二级指针可以更改指针常量指向的值
printf("%d",*p1);
return 0 ;
}
指向常量的指针常量
指针本身即地址不可以被修改
通过该指针本可以去修改它所指向的存储单元中的值
指向常量的指针常量的定义
类型说明符 const * const 指针变量;
类型说明负表示指针所指向的存储单元中值的数据类型
指针运算负(*)在两个关键字const中间
指向常量的指针常量的使用注意点
同过其他指针还是可以修改该指针本身的值,也可以修改该指针所指向的存储单元中的值,但编译时会出现警告
#include <stdio.h>
int main (void)
{
int a = 7;
int b = 8;
int const *const p1 = &b;
// p1 = &a; //不允许修改指向值
// *p1 = 6; //不允许修改指向值的值
printf("%d\n",*p1);
int **p2 = &p1;
**p2 = 5; //可以通过二级指针修改指针指向存储单元的值
printf("%d\n",*p1);
*p2 = &a; //可以通过二级指针修改指针指向存储单元
printf("%d\n",*p1);
**p2 = 5;
return 0 ;
}