const的使用
来源:互联网 发布:虚幻4 编程语言 编辑:程序博客网 时间:2024/05/16 10:04
- 1.用于定义常量变量,这样这个变量在后面就不可以再被修改 。见Sub_1函数
- 2.保护传参时参数不被修改,如果使用引用传递参数或按地址传递参数给一个函数,在这个函数里这个参数的值若被修改,则函数外部传进来的变量的值也发生改变,若想保护传进来的变量不被修改,可以使用const保护。见Sub_2函数
- 3.网上有人说会节省内存,但我试了一下,发现并不会节省内存。见Sub_3函数
#include "iostream"#include "windows.h"using namespace std;#define PI 100VOID Sub_1(const int* ); VOID Sub_2(const int& a);VOID Sub_3();int main(){ int v2 = 6; Sub_1(&v2); Sub_2(v2); Sub_3(); return 0;}VOID Sub_1(const int *v2){ const int v1 = 5; int v3 = 5; int a[v1]; //正确 v1是常量 //int b[v3]; //错误 表达式必须含有常量值 //v1 = 6; // 错误 //*v2 = 8; // 错误 不能给常量赋值,如果参数中没有const,那么v2将会被修改}VOID Sub_2(const int& v2){ //v2 = 8; // 错误 不能给常量赋值,如果参数中没有const,那么v2将会被修改}VOID Sub_3(){ const int Pi = 100; // 在vs2015下调试发现 Pi占有一片内存,v1、v2、v3、v4、都占有内存空间 int v1 = Pi; int v2 = Pi; int v3 = PI; int v4 = PI;}
- 4.任何不会修改数据成员的函数都应该声明为const 类型。如果在编写const 成员函数时,不慎修改了数据成员,或者调用了其它非const 成员函数,编译器将指出错误,这无疑会提高程序的健壮性。例如:
#include "iostream"#include "windows.h"using namespace std;class My{public: VOID Sub_1()const; VOID Sub_2()const; VOID Sub_3();private: int v1; int v2;};int main(){ return 0;}VOID My::Sub_1()const{// v1 = 10;// v2 = 10; Sub_2();// Sub_3();}VOID My::Sub_2() const{}VOID My::Sub_3(){}
- 5.const和指针的搭配使用
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "iostream"#include "windows.h"using namespace std;VOID Sub_1();VOID Sub_2();VOID Sub_3();VOID Sub_4();VOID Sub_5();int main(){ Sub_1(); Sub_2(); Sub_3(); Sub_4(); Sub_5(); return 0;}// 普通指针VOID Sub_1(){ int v1 = 1; int* p1 = &v1; printf("%d\r\n", *p1); // 输出 1 ++v1; printf("%d\r\n", *p1); // 输出 2 (*p1)++; printf("%d\r\n", *p1); // 输出 3}// const int* p1,不可以通过指针p1修改v1的值,但是可以修改存于p1的地址。VOID Sub_2(){ int v1 = 1; int v2 = 2; const int* p1 = &v1; printf("%d\r\n", *p1); //输出是 1 ++v1; printf("%d\r\n", *p1); //输出是2 //(*p1)++; //printf("%d\r\n", *p1); //错误,"p1":不能给常量赋值 p1 = &v2; printf("%d\r\n", *p1); // 输出是2}// const int* p1 和 int const *p1 是一样的.// 不可以通过指针p1修改v1的值,但是可以修改存于p1的地址。VOID Sub_3(){ int v1 = 1; int v2 = 2; int const *p1 = &v1; printf("%d\r\n", *p1); // 输出是1 ++v1; printf("%d\r\n", *p1); // 输出是2// (*p1)++;// printf("%d\r\n", *p1); //错误,"p1":不能给常量赋值 p1 = &v2; printf("%d\r\n", *p1); // 输出是2}// int* const p1 ,p1里面的地址不能被修改,但是可以通过p1修改p1所指向的变量的值VOID Sub_4(){ int v1 = 1; int v2 = 2; int* const p1 = &v1; printf("%d\r\n", *p1); // 输出是1 ++v1; printf("%d\r\n", *p1); // 输出是2 (*p1)++; printf("%d\r\n", *p1); // 输出是3// p1 = &v2; // 错误 "p1":不能给常量赋值// printf("%d\r\n", *p1);}VOID Sub_5(){ int v1 = 1; int v2 = 2; const int * const p1 = &v1;// int const * const p1 = &v1; //这两句是一样的 printf("%d\r\n", *p1); // 输出是1 ++v1; printf("%d\r\n", *p1); // 输出是2// (*p1)++; printf("%d\r\n", *p1); //错误,"p1":不能给常量赋值// p1 = &v2; printf("%d", *p1); //错误,"p1":不能给常量赋值}
0 0
- const的使用,const char * const foo(char const * const str) const;什么意思?
- Const 的使用
- const的使用
- const的使用
- Const的使用
- 关于const的使用
- const的使用
- const volatile的使用
- const 的使用
- const的使用
- 使用const的好处
- Const 的使用
- const关键字的使用
- const的使用
- const的使用
- const 的使用
- 使用Const的理由
- const的使用
- Rancher event机制及其实践指南
- 【IAP支付之三】苹果IAP安全支付与防范 receipt收据验证
- SPOJ 8222 NSUBSTR - Substrings (后缀自动机)
- c语言试题整理(如有错误还望指正)
- ActiveMQ(二)———使用Topic来发送消息
- const的使用
- 第一个Servlet程序--day_03
- 个人心情记录和培训总结
- 欢迎使用CSDN-markdown编辑器
- 【Codeforces 747B Mammoth's Genome Decoding】+ 构造
- lua基础自学
- shell 编程
- Shell中使用getopt、getopts命令
- c/c++--一道c++面试题的思考与学习