一、 常量指针
#include<stdio.h>
int main()
{
int num = 520;
const int cnum = 880;
const int* pc = &cnum; //pc存放的cnum的地址
//*pc存放的cnum的值
printf("cnum:%d,&cnum:%p\n", cnum, &cnum);
printf("*pc:%d,pc:%p\n", *pc, pc);
pc = # //改变pc存放的地址为num;*pc存放的num的值
printf("num:%d,&num:%p\n", num, &num);
printf("*pc:%d,pc:%p\n", *pc, pc);
}
二、指向常量的指针:(const关键字)
1、指针可以修改指向不同的常量
2、指针可以修改指向不同的变量
3、可以通过解引用来读取指针指向的数据
4、不可以通过解引用修改指向的数据
#include <stdio.h>
int main()
{
int num = 520;
const int cnum = 880;
int* const p = #
*p = 1024; //指针指向的值可以被改变
printf("*p:%d\n", *p);
//p = &cnum;
//printf("*p:%d\n", *p); //会报错,指针自身的不可以被修改
return 0;
}
三、常量指针:(const关键字)
指向非常量的常量指针
----指针自身的不可以被修改
----指针指向的值可以被修改
指向常量的常量指针
----指针自身不可以被修改
----指针指向的值也不可以被修改
四、指向“指向常量的常量指针”的指针
#include<stdio.h>
int main()
{
int num = 520;
const int cnum = 880;
const int* const p = #
const int* const* pp = &p;
printf("pp:%p, &p:%p\n", pp, &p); //pp存放的p的地址
printf("*pp:%p, p:%p, &num:%p\n", *pp, p, &num);//对pp进行一层解引用,也就是num的地址
printf("**pp:%d, *p:%d, num:%d\n", **pp, *p, num);// 对pp进行两层解引用,存放的是num的值
return 0;
}