目录
1、常量指针
2、指针常量
3、常量指针常量
1、常量指针
指向常量的指针
指针指向的值不能修改,但是指针的值可以修改 const放在最前面时,它修饰的就是*p,那么*p就不可变 就是p的指向可变,指向对象的内容不可变
例如: const int *p1 = &a; 此时指针p1指向的值不能修改,但是该指针可以指向其他的地址
可以改变p 不可改变*p
#include <stdio.h>
int main()
{
int a = 3;
int b = 4;
const int *p;
//或可以写成int const *p;
p = &a;
printf("%d",*p);
//此为输出a的值 3
p = &b;
printf("%d",*p);
//此为输出b的值 4
return 0;
//p可以改变所指向的地址,但不能改变*p所指向内容的值
}
?编写实例:(const和指针类型名可以互换,二者是等价的) const char *s; char const *s;
2、指针常量
指针是常量
此时const修饰的是p,所以p中存放的单元的地址不可变,而存放单元中的内容可变 就是p的指向不可变,p所指向的内存单元的内容可变
例如: int *const p1 = &a; 此时指针p1只能指向a,不能指向其他的地址,但是p1可以修改a的值
可以改变*p 不能改变p
#include <stdio.h>
int main(void)
{
int a = 3;
int b = 4;
int *const p = &a;
//赋了初值后的p指向就不可变了
printf("%d",*p);
//输出值为a的值 3
*P = 5;
//可以改变*P指针的值来改变数的值
printf("%d",*p);
//输出值为*P所赋的值 5
printf("%d",a);
//此时可发现*P所指向的a的值也发生了变化 5
return 0;
}
编写实例: char*a = "hello"; char*const p = a;
3、常量指针常量
指向常量的常量指针
这里*p和p都被修饰了,那么p中存放的内存单元和内存单元中的内容都不可变
例如: const int *const p1 = &a; p1指向的地址不能修改,指向值也不能修改(p1只能指向a且不能修改a的值)
*p和p都不能改变
编写实例: const char*a = "hello"; const char*const cpc; char const*const pcc;
|