| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C语言06 const详解+const 和define的区别 -> 正文阅读 |
|
[C++知识库]C语言06 const详解+const 和define的区别 |
1、C语言的关键字const的含义和用途。 ?含义:const是只读的意思,被const修饰的东西都受到强制保护,只允许访问不允许被改变,可以预防意外的变动,能提高程序的健壮性。 通过给编译器特定的附加信息,可以使编译器保护那些不希望被改变的参数,防止其被无意的代码修改。 用途: (1)可以定义 const 常量。 (2)可以修饰指针。 (3)可以修饰函数的参数、返回值,甚至函数的定义体。 2、const 用法:限定变量和指针 (1)const int a; (2)int const a; ?//似ROM 1和2作用一样,a为常整型数。限定a数据成员只能被访问不能被修改。即a不可变。 (3)const int *a; (4)int const *a; 3和4作用一样,限定a的指向,a只能指向常整型。 a可变,可以指向不同的常整数;但是被a指定的内容*a是常整型,不可变的。 即a本身可变,但*a不可变;
(5)int* const a; 限定a为指向整数的常指针,即指针的指向不能修改。 a不可变,但是*a可变;
(6)int const * const a; 限定a为指向一个常整数的常指针,即a不可变,*a也不可变。
======== @助记方法:把一个声明从右向左读。
3、const 限定函数参数 void function(const int Var); 传递过来的参数在函数内不可以改变. 4、const 限定函数返回值型. const int function(); //此时const无意义 5、const的实际运用: 以下代码有什么问题? (1)
答: "AAA"是字符串常量。s是指针,指向这个字符串常量,所以声明s的时候就有问题。 cosnt char* s="AAA"; 然后又因为是常量,所以对是s[0]的赋值操作是不合法的。 (2)
答:s[10] 表示为非常量,可以进行修改,合法。 @区别char *p ="AAA";和 char p[ ] ="AAA"; (3)
答:语法上合法,但是有隐患,数组没有通常终止的'\0'字符。因此该数组不是一个真正的C字符串,从而不能用在strcpy和printf等语句中。 多数情况下,应该让编译器计算数组初始化的初始化个数,在初始值“abc”中,计算得到的长度。
(4)
答:*p1作为整体不能被修改,但p1可以修改,p1++合法。 printf("p1 = %s", p1);输出: bc p2作为一个整体,不能被修改,p2++修改非法。 const pStr p2;等同于pStr const p2;就像 const int p2;等同于int const p2;这样p2就是指向整型的常指针。所以p2是不能修改的。 ===========const 修饰符和 define的区别===============【1】3类 有关标志 #define LIMIT?? 100? ?//这里 LIMIT?是一个标志,代表100。 const? int? LIMIT=100;? //这里LIMIT?是一个常量名,在内存有空间放了100,因此有地址,可以用指针指向这个空间,但不能修改它。 int i=100;? //这里i是一个变量名,在内存有空间放了100,因此有地址,可以用指针指向这个空间,而且可以改放别的整数。 【2】在定义常量时,为什么推荐使用const,而不是#define? C中常用:#define 变量名 变量值 定义一个值替代。 它有个致命缺点:在预处理阶段缺缺乏类型检测机制,这样预处理可能引发错误的隐患,const却没这个问题。 【3】区别的例子
T2 is 2;
T2 is 0; |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 5:44:11- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |