1、C语言的缺点

(1)重用性差

(2)维护性差

2、C++

从面向世界的需求出发来设计我们的程序,

3. 使用增强

A.

for (int i = 0; i < 10; i++)
{
}

C语言编译器的话,会报错,因为C语言认为,变量需要先定义,后面再时候,而C++的编译器则是可以边定义边使用。

B、

C语言编译器 : 可以重复定义变量,但是C++则不允许。

 

C、对const 的增强:

C语言:

const 修饰之后,只是说明这边个边不能作为左值使用而已,也就是把变量修饰为只读变量

C++:

const 修饰之后,变量就真的是常量了 

当const 变量的时候,就将常量放到符号表里面;

编译的过程若发现使用了常量,则直接使用符号表里面的值进行替换

D、const  和 define  区别

const 常量 是由编译器进行处理,提供类型检查和作用域的检查

宏定义是由预处理器处理,做单纯的文本替换而已。

E.对bool 类型的增强

int main()
{
int a;
bool b = true;
printf("b = %d, sizeof(b) = %d\n", b, sizeof(b));
b = 3;
a = b;
printf("a = %d, b = %d\n", a, b);
b = -5;
a = b;
printf("a = %d, b = %d\n", a, b);
b = 0;
a = b;
printf("a = %d, b = %d\n", a, b);
while (1);
}

b = 1, sizeof(b) = 1
a = 1, b = 1 // b 虽然是等于三,但是非零就是 true,编译器是以 一进行替换,
a = 1, b = 1 // 非零所以为 true,
a = 0, b = 0

因为C++编译器会将非零的值全部转为 true,而零值则转为 false,对于 true 和false 而言,内部都是用 零和 一进行替换,

 
int main()
{
bool b = false;
printf("b = %d\n",b);
b++;
printf("b = %d\n",b);
while (1);
}
输出结果为:0 和 1

F. 三木运算符

int a = 1;
int b = 2;
(a < b ? a : b) = 3;
printf("a= %d, b = %d\n", a, b);

C编译器的话,就会报错,因为在c编译器中,三木运算符返回的是数值,数值是不可以做左值的。

但是在C++编译器就可以,因为三木运算符返回的是变量,所以输出的a = 3, b = 2;

4.引用

引用其实就是对已经变量的一个别名,比如:

int a;
int &b = a;

这就是一个引用的列子,也就是说,对 b 的操作,其实等同于对 a 的操作,记住引用的如好,不是取地址符,是引用哈,

int a ;
int &b = a; // 定义了引用,必须使用其他的变量马上进行初始化
b = 5;
printf("a = %d,b = %d\n",a, b);
printf("%08x\n", &a);
printf("%08x\n", &b);

输出的结果是,a =b =5,输出的地址也是一样的地址

引用其实是有自己的存储空间的,内部的实现的方式其实也是通过指针的方式实现的,所以一个引用占据的大小就是四个字节,

当函数的返回值作为引用的时候:

(1)栈变量做引用的话,这个实时不被允许,最好不要,

(2)全局变了或者静态变量,可以作为引用,

最新文章

  1. how to use panda
  2. C语言字母频率统计
  3. Problem to create &quot;New Database Diagram&quot; in Microsoft SQL Server Management Studio for SQL Server 2012
  4. tomcat启动闪退
  5. winform插件机制学习
  6. Spring 依赖注入,在Main方法中取得Spring控制的实例
  7. 基于Elasticsearch开发时的注意事项备忘
  8. asp.net中的<%%>形式的详细用法实例讲解
  9. delphi TOpenDialog
  10. Python的locals()函数
  11. Spring MVC通过AOP切面编程 来拦截controller 实现日志的写入
  12. yafu安装使用方法以及mismatched parens解决方法
  13. Entity framework 绑定到Datagridview的添加删除修改
  14. &lt;20190104&gt;关掉一些鸡肋的Win10功能
  15. spring校验注解
  16. Spring Boot 揭秘与实战(二) 数据缓存篇 - EhCache
  17. 2018.3.15 css课外小知识
  18. 【RF库Collections测试】List Should Not Contain Duplicates
  19. idea中使用gradle
  20. JQuery UI完成自动匹配的的下拉列表步骤

热门文章

  1. [CQOI2016][bzoj4519] 不同的最小割 [最小割树]
  2. linux系统——etc下的profile文件
  3. Optimal Marks(optimal)
  4. bzoj1093【ZJOI2007】最大半联通子图
  5. IOS 滑动指示导航栏 渐变
  6. repeater做成gridview【更新删除编辑等】
  7. Dependency Injection in ASP.NET Web API 2
  8. VS Code开发技巧集锦【转】
  9. Markdown语法格式
  10. python - break和continue