📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处
文章目录
- 一、const的作用
- 二、const和define的区别
- 三、const修饰指针
- 3.1修饰指针的4种形式
- 3.2如何理解指针变量
- 3.3结论和记忆方法
- 四、typedef与const
- reference
一、const的作用
🧩const是constant的缩写,就是常量的意思。const在C语言中用来修饰变量,表示这个变量是常量。
🌞用const定义的变量的值是不允许改变的,即不允许给它重新赋值,即使是赋相同的值也不可以。所以说它定义的是只读变量。意味着定义的时候就必须给它赋初值。
const int i = 14//这种表示方式以后i就只能等于14,无法改变
二、const和define的区别
🧩阶段不同
define是预编译指令,定义的宏是在预处理阶段展开的,而const是普通变量的定义,是只读变量,且是在编译运行阶段使用的。
🧩常量与变量
define定义的是常量,define定义的宏在编译后消失了,它不占用内存;
而const定义的常变量本质上仍是一个变量,具有变量的基本属性,有类型、占用存储单元,除了不能作为数组的长度,用const定义的常变量具有宏的优点,而且使用更方便。
🧩有误类型检查:
define定义的对象没有数据类型,编译器只能机械地进行字符替换,没有类型安全检查,即会出现“边际问题”或者是“括号问题”。而const定义的是变量,有数据类型。
三、const修饰指针
3.1修饰指针的4种形式
const修饰指针有4种形式,区分清楚这4种即可全部理解const和指针。
第一种:const int *p;
第二种:int const *p;
第三种:int * const p;
第四种:const int * const p;
3.2如何理解指针变量
主要涉及到2个变量:
第一个是指针变量p本身;
第二个是p指向的那个变量(*p)。
一个const关键字只能修饰一个变量,所以弄清楚这4个表达式的关键就是搞清楚const放在某个位置是修饰谁的。
1.const int *p; p是一个指针,指针指向一个int型数据。p所指向的是个常量。
2.int const *p; p是一个指针,指针指向一个int型数据。p所指向的是个常量。
3.int *const p; p是一个指针,指针指向一个int型数据。p本身是常量,p所指向的是个变量
4.const int *const p; p是一个指针,指针指向一个int型数据。p本身是常量,指向的也是常量
3.3结论和记忆方法
1、const在前面,就表示const作用于p所指向的量。所以这时候p所指向的是个常量。
2、const在后面,表示p本身是常量,但是p指向的不一定是常量。
const型指针有什么用?
char *strcpy(char *dst, const char *src);
字符串处理函数strcpy,它的函数功能是把src指向的字符串,拷贝到dst中。
四、typedef与const
(1)typedef int *PINT; const PINT p2; 相当于是int *const p2;
(2)typedef int *PINT; PINT const p2; 相当于是int *const p2;
(3)如果确实想得到const int *p;这种效果,只能typedef const int *CPINT; CPINT p1;
reference
http://c.biancheng.net/view/217.html