常量指针变量:仅指向唯一内存地址的指针变量,即不能修改原本指向的地址
int main()
{
int num1 = 10;
int num2 = 50;
int* const ptr1 = &num1;
ptr1 = &num2;
printf("value stored at pointer = %d\n",*ptr1);
system("pause");
return 0;
}
//编译错误,ptr1 = &num2这句代码引起的,指针原本指向的是num1,不能再修改其指向num2
常量指针:内存地址存放的值不能通过指针去修改值。
int main()
{
int num1 = 10;
int num2 = 19;
const int* ptr1 = &num1;
*ptr1 = 20;
num1 = 20;
printf("value stored at pointer = %d\n",*ptr1);
system("pause");
return 0;
}
编译错误: *ptr1 = 20;这句代码引起的,不能通过指针修改指定内存地址的值,即ptr1指向的是num1的地址,不能通过指针修改num1的值,但可以使用num1 = 20这句代码修改num1的值。
指针常量:内存地址存放的值和指针指向的地址都不能通过指针去修改值。
int main()
{
int num1 = 10;
int num2 = 19;
const int* const ptr1 = &num1;
*ptr1 = 20;//不能修改常量指针指向的值
num1 = 20;
ptr1 = &num2;//不能修改常量指针的值
printf("value stored at pointer = %d\n",*ptr1);
system("pause");
return 0;
}
编译错误:*ptr1对应的内存num的地址的值不能通过指针修改,ptr1原本指向num1,也不能修改其指向别的内存地址。