当前位置: 首页 > news >正文

网站开发用笔记本电脑个人网站可以做品牌推广

网站开发用笔记本电脑,个人网站可以做品牌推广,现代网站开发建设流程,做纯净系统的网站以下内容源于C语言中文网的学习与整理#xff0c;非原创#xff0c;如有侵权请告知删除。 关于C语言中const的用法#xff0c;见《C语言const的用法详解》。 一、C中const的新花样 在C语言中#xff0c;const用来限制一个变量#xff0c;表示这个变量不能被修改#xf…以下内容源于C语言中文网的学习与整理非原创如有侵权请告知删除。 关于C语言中const的用法见《C语言const的用法详解》。 一、C中const的新花样 在C语言中const用来限制一个变量表示这个变量不能被修改我们称这样的变量为常量。 在C中const 的含义并没有改变只是对细节进行了一些调整以下是最主要的两点。 1、C中的 const 更像编译阶段的 #define 先来看下面的两条语句 const int m 10; int n m; 我们知道变量是要占用内存的即使被 const 修饰也不例外。m、n 两个变量占用不同的内存int n m;表示将 m 的值赋给 n这个赋值的过程在C和C中是有区别的。 在C语言中编译器会先到 m 所在的内存取出一份数据再将这份数据赋给 n。 在C中编译器直接将 10 赋给 n没有读取内存的过程和int n 10;的效果一样。换言之C 中的常量更类似于下面的 #define命令是一个值替换的过程只不过 #define是在预处理阶段替换而常量是在编译阶段替换。 #define m 10 C 对 const 的处理少了读取内存的过程优点是提高了程序执行效率缺点是不能反映内存的变化一旦 const 变量被修改C 就不能取得最新的值。 有读者提出疑问const 变量不是禁止被修改吗对这种说法没错不过这只是语法层面上的限制通过指针仍然可以修改。下面的代码演示了如何通过指针修改 const 变量 #include iostreamint main(){const int n 10;//n得到的指针的类型是const int *必须强制转换为int *后才能赋给pint *p (int*)n;*p 99; //修改const变量的值printf(%d\n, n);return 0; } 将上述代码放到.c文件中以C语言的方式编译运行结果为99。将上述代码放到.cpp文件中以C的方式编译运行结果就变成了10。 这种差异正是由于C和C对 const 的处理方式不同造成的。在C语言中使用 printf 输出 n 时会到内存中获取 n 的值这个时候 n 所在内存中的数据已经被修改成了 99所以输出结果也是 99。而在C中printf(%d\n, n);语句在编译时就将 n 的值替换成了 10效果和printf(%d\n, 10);一样不管 n 所在的内存如何变化都不会影响输出结果。 当然这种修改常量的变态代码在实际开发中基本不会出现本例只是为了说明C和C对 const 的处理方式的差异C语言对 const 的处理和普通变量一样会到内存中读取数据C 对 const 的处理更像是编译时期的#define是一个值替换的过程。 2、C中全局 const 变量的可见范围是当前文件 普通全局变量的作用域是当前文件但是在其他文件中也是可见的使用extern声明后就可以使用这在《C语言头文件的编写》一章中进行了深入讲解。 下面是多文件编程的演示代码 代码段1源文件1 #include stdio.hint n 10; //修改为const int n 10; void func();int main(){func();printf(main: %d\n, n);return 0; } 代码段2源文件2 #include stdio.hextern int n;void func(){printf(module: %d\n, n); } 不管是以C还是C的方式编译分别将源文件后缀设置为.c\.cpp运行结果都是 module: 10 main: 10 接着我们修改代码段1在 n 的定义前面加 const 限制。 如果以C的方式编译则修改后的代码仍然能够正确编译运行结果和上面也是一样的。这说明C语言中的 const 变量在多文件编程时的表现和普通变量一样作用域是当前文件但是在其他文件中也是可见的除了不能修改没有其他区别。 如果以C的方式编译则修改后的代码就是错误的。这是因为 C 对 const 的特性做了调整C 规定全局 const 变量的作用域仍然是当前文件但是它在其他文件中是不可见的这和添加static关键字的效果类似。虽然代码段2中使用 extern 声明了变量 n但是在链接时却找不到代码段1中的 n。 由于 C 中全局 const 变量的可见范围仅限于当前源文件所以可以将它放在头文件中这样即使头文件被包含多次也不会出错请看下面的例子。 module.h 代码 const int n 10; void func(); module.cpp 代码 #include stdio.h #include module.hvoid func(){printf(module: %d\n, n); } main.cpp 代码 #include stdio.h #include module.hint main(){func();printf(main: %d\n, n);return 0; } 运行结果 module: 10 main: 10 C和C中全局 const 变量的作用域相同都是当前文件不同的是它们的可见范围C语言中 const 全局变量的可见范围是整个程序在其他文件中使用 extern 声明后就可以使用C中 const 全局变量的可见范围仅限于当前文件在其他文件中不可见所以它可以定义在头文件中多次引入后也不会出错。 如果你使用的是 GCC那么可以通过添加 extern 关键字来增大 C 全局 const 变量的可见范围如下所示 extern const int n 10; 这样 n 的可见范围就变成了整个程序在其他文件中使用 extern 声明后就可以使用了。不过这种方式只适用于 GCC不适用于 VS/VC。 3、总结 C 中的 const 变量虽然也会占用内存也能使用获取得它的地址但是在使用时却更像编译时期的#define#define也是值替换可见范围也仅限于当前文件。 很多C教程在对比 const 和 #define 的优缺点时提到#define 定义的常量仅仅是字符串的替换不会进行类型检查而 const 定义的常量是有类型的编译器会进行类型检查相对来说比 #define 更安全所以鼓励大家使用 const 代替 #define。 这种说法虽然没错但是我没有发现不进行类型检查有什么隐患我在使用 #define 的过程中也没有发现什么缺点所以我对上面的观点持保留态度也请大家多多指点。 二、const成员变量与const成员函数 在类内部如果你不希望某些数据被修改可以使用const关键字加以限定。const 可以用来修饰成员变量和成员函数。 1、const成员变量 const 成员变量的用法和普通 const 变量的用法相似只需要在声明时加上 const 关键字。 初始化 const 成员变量只有一种方法就是通过构造函数的初始化列表见博文的一.5。 2、const成员函数 const 成员函数也称为常成员函数常成员函数需要在声明和定义的时候在函数头部的结尾加上 const 关键字。 const 成员函数可以使用类中的所有成员变量但是不能修改它们的值这种措施主要还是为了保护数据而设置的。比如我们通常将 get 函数读取成员变量的函数的名字通常以get开头后跟成员变量的名字所以通常将它们称为 get 函数设置为常成员函数。 请看下面的例子 class Student{ public:Student(char *name, int age, float score);void show();//声明常成员函数char *getname() const;int getage() const;float getscore() const; private:char *m_name;int m_age;float m_score; };Student::Student(char *name, int age, float score): m_name(name), m_age(age), m_score(score){ } void Student::show(){coutm_name的年龄是m_age成绩是m_scoreendl; } //定义常成员函数 char * Student::getname() const{return m_name; } int Student::getage() const{return m_age; } float Student::getscore() const{return m_score; } 三、const对象常对象 在C中const 也可以用来修饰对象称为常对象。 定义常对象的语法和定义常量的语法类似 const class_name object_name(params); //或者 class_name const object_name(params); 当然你也可以定义 const 指针 const class_name *p new class_name(params); //或者 class_name const *p new class_name(params); 一旦将对象定义为常对象之后不管是上面哪种形式该对象就只能访问被 const 修饰的成员包括 const 成员变量和 const 成员函数因为非 const 成员可能会修改对象的数据编译器也会这样假设C禁止这样做。 常对象使用举例 #include iostream using namespace std;class Student{ public:Student(char *name, int age, float score); public:void show();char *getname() const;int getage() const;float getscore() const; private:char *m_name;int m_age;float m_score; };Student::Student(char *name, int age, float score): m_name(name), m_age(age), m_score(score){ } void Student::show(){coutm_name的年龄是m_age成绩是m_scoreendl; } char * Student::getname() const{return m_name; } int Student::getage() const{return m_age; } float Student::getscore() const{return m_score; }int main(){const Student stu(小明, 15, 90.6);//stu.show(); //errorcoutstu.getname()的年龄是stu.getage()成绩是stu.getscore()endl;const Student *pstu new Student(李磊, 16, 80.5);//pstu - show(); //errorcoutpstu-getname()的年龄是pstu-getage()成绩是pstu-getscore()endl;return 0; } 本例中stu、pstu 分别是常对象以及常对象指针它们都只能调用 const 成员函数。
http://www.w-s-a.com/news/674311/

相关文章:

  • 秦皇岛网站建设系统推荐个人网站免费制作
  • 我做夫人那些年网站登录wordpress 扫码付费
  • 网站关键词代码怎么做公司 网站建设
  • 哈尔滨多语言网站建设wordpress分类链接
  • 购物网站项目介绍软件开发流程的五大步骤
  • 做的网站怎么放在网上2008 iis搭建网站
  • 网站维护服务公司上海兼职网站制作
  • 企业做网站需要多少钱湘潭九华网站
  • 嘉兴建站服务微营销官网
  • 比较好的网页模板网站浦项建设(中国)有限公司网站
  • 有趣的个人网站网页设计与制作的岗位职责
  • 有建设网站的软件吗长沙做网站的公司对比
  • 网站的外链接数中铝长城建设有限公司网站
  • 北京建设网站公司网站建设费用 无形资产
  • 适合seo的建站系统如何建立网页
  • 我想自己建立一个网站给大家分享个永久免费的云服务器
  • 怎样做网站和网站的友情链接官网优化 报价
  • 购买网站空间大小聊城网站空间公司
  • 做像美团淘宝平台网站多少钱开发网站企业
  • 网站建设前期费用二手购物网站策划书
  • dede学校网站百度联盟是什么
  • 献县网站建设网站开发专业定制
  • 龙华做网站yihe kj安徽六安彩礼一般给多少
  • flash网站建设公司我的小程序在哪里找
  • 建网站需要数据库吗如何制作简单的网页链接
  • 杭州设计企业网站高端公司上虞做网站公司
  • 做网站能赚钱么用wordpress搭建知名网站
  • 阿里云服务器网站开发青岛做网站找哪家
  • 凡科做的网站为什么打不开织梦cms仿某作文网站整站源码(带采集)安装数据库
  • 免费h5模板网站模板汽车报价网址