#include <stdio.h>
#include <stdlib.h>
/*
* const int *p 和 int const *p 是一样的 是指针所指向的地址里面的值,是不能变的
*
* int *const p 就不一样了,指针指向的地址值可以变,但是指针只能指向这个地址
*
* const int *const p,相当于指针里面的值不能变,指针也不能改变指向
**/
int main(int argc, char *argv[]) {
int i = 1;
int j = 100;
int *ptr_i = &i;
printf("%d\n", *ptr_i);
const int j = 3;
//int *ptr_j = &j; // 这会报错,因为j是常量,不能用一个非const指针指向它
const int *ptr_j = &j; // 要想用指针指向一个常量,那么这个指针也必须是const的,否则不是可以通过这个指针来改变那个常量值了么
const int *ptr_i2 = &i;
//*ptr_i2 = 2; // 通过常量指针指向一个变量,不能通过该指针改变变量值
i = 2; // 但可以通过变量名改变其值,因为i本身就是个变量嘛
printf("ptr_i2 = %d\n", *ptr_i2);
int *const ptr_i3 = &i;
printf("ptr_i3 = %d\n", *ptr_i3);
//ptr_i3 = &j; // 指针常量ptr_i3,一旦指向了某个地址,例如i,则不能再指向其他地方,例如本行,又把ptr_i3指向j了,就报错了
const int *const p = &i;
*p = 200; // 改变p指向地址的值会报错
p = &j; // 改变p的指向会报错
exit(0);
}
常量指针 指针常量
于 2023-05-02 15:10:35 首次发布