C语言学习--常量指针与指针常量
指针常量
#include<stdio.h> #include<string.h> //常量指针:是一个指针, 定义不用初始化, 能改变指向,但是指向的内容不能被修改 const int* p; //指针常量: 是一个常量,这个常量的值是一个指针, 定义的时候必须初始化, 并且不能改变指向, 可以改变指向的内容 // const 修饰p1 代表p1是一个常量, p1是什么样的常量呢, 是指针类型的, 指针就是地址, 所以P1的指向是不能改变的, 就是说p1代表的地址不能修改, 但是这个地址里面的内容是可以修改的 int* const p2; int main() { int a = 10; int b = 20; int* const p1 = &a; //定义的时候必须初始化 printf("%d\n", *p1); *p1 = 100; printf("%d\n", *p1);// 100, 指针常量的内容是允许被修改的 p1 = &b;//报错, 指针常量的指向是不能被修改的, p1是地址, 这个地址是不能被修改的 }
常量指针
#include<stdio.h> #include<string.h> //常量指针:是一个指针, 定义不用初始化, 能改变指向,但是指向的内容不能被修改 const int* p; //首先是一个指针, 但是这个指针指向的内容是一个常量 int main() { const int* p1; int a = 10; int b = 20; p1 = &a; printf("*p1:%d\n",*p1);//10 p1 = &b; printf("*p1:%d\n",*p1);//20 指向是可以改变的 *p1 = 100;//报错, 指针里面的内容是不能改变的 }