C的常量以及常量指针和指针常量
常量介绍
C的常量是一种相对于变量的概念,在程序的运行过程中值不会改变,只能在定义的时候被赋值,无法多次赋值。
常量可以是任何数据类型。
常量定义方法
常量有两种定义方法
-
define const
#include <stdio.h> //记得常量定义为大写,养成良好的编程习惯 #define TEST 3.14 const int WIDTH = 5; int main() { printf("TEST的值为%0.4f ", TEST); printf("ZIP的值为%d ", ZIP); return 0; }
const使用方法
const在定义的时候就需要被赋值,不能先定义再赋值,也不能只定义不赋值。
唯一正确的定义方式
const int WIDTH = 5;
指针常量和常量指针
指针常量:指向常量的指针(pointer to const)
常量指针:指针本身是常量,即指针所保存的地址不能改变(const pointer),因此常量指针在定义的时候需要指定指向的地址。
这两个名字很容易混淆,经常遇到指针常量/常量指针区分不清的情况。因此我们把两种英文名字写出来,英文名字很贴切。用翻译英文名字来记忆。
指向常量的指针 → pointer(指针) to const(常量)→指针常量 指针本身是常量 → const(常量) pointer(指针)→常量指针
这里举个例子
#include <stdio.h> int main(){ int num = 9; int test = 100; // *在const前面就是指针本身是常量 不然就是指针指向常量 int *const a = # int const *b = # //错误:因为指针指向常量,因此不能修改常量的值 //*b = *b + 1; //指针保存的地址不变,但是地址里的内容可以改变 *a = *a + 1; //错误:常量指针保存的地址不能变 //a = &test; //指针指向常量,常量本身不能改变,但是可以修改指针指向 b = &test; printf("a = %d ", *a); printf("b = %d ", *b); }
输出
a = 10 b = 100
其中pointer to const有多种写法
const int *b = # int const *b = #
通过这个例子我们也可以看出,pointer to const并不一定是真的指向常量,只是认为自己指向常量而已。
同时我们可以总结出以下规律:
注:√表示可以改变,×表示不能改变
下一篇:
Python实现一个猜数字游戏