C和C++

C主要是应用在在驱动层,是面向过程的编程语言,对类型的定义不是很严格。C++主要是应用与应用层,是C语言的一个加强版,可以完全兼容C语言,并且还有很多C语言不具备的特性,如,C++是一种面向对象的编程语言,C++的设计目标是:运行效率和开发效率的统一

  • C++更加强调语言的实用性,可以在任意地方声明变量
  • C++中的register只是起到兼容性的作用
  • C++中的编译器能够更好的进行优化

struct关键字的加强:

C

typedef struct _tag_student Student;

struct _tag_student

{

const char* name;

int age;

}

C++

struct Student

{

const char* name;

int age;

};

int f() 和int f(void)有什么区别

注意:C++中的所有的表示符都必须显示的声明类型,不允许默认类型的出现,但是在C语言中可以

C++中:

  • int f()和int f(void)表示的是相同的意思,指的是定义了一个返回值是int的无参数的函数

C中: (在C中默认的参数类型和函数返回值类型都是int)

  • int f() 指的是定义了一个返回值为int 函数参数个数为任意多个的函数
  • int f(void) 指的是定义了一个返回值为int类型的无参数的函数

C和C++中的const的分析:

C

  • 修饰的变量是只读,本质还是变量
  • 修饰的局部变量在栈上分配空间
  • 修饰的全局变量在只读存储区分配空间
  • 只在编译期有用,其他时间没用
  • 注意:const修饰的变量不是真的常量,他只是告诉编译器该变量不能出现在赋值符号的左边

C++

  • 当碰到const标识符时,在符号表中放入常量
  • 编译过程中若发现使用常量,则直接以符号表中的常量进行替换
  • 编译过程中若发现下述情况,则给对应常量分配内存空间
    • 对const常量使用了extern
    • 对const常量使用了&操作符
  • C++编译器虽然可能给const常量分配空间但是不会使用其存储空间中的值

小结:

  • 与C语言不同,C++中的const不是只读变量
  • C++中的const是一个真正意义上的常量
  • C++编译器可能会为const常量分配空间
  • C++完全兼容C语言中const常量的语法特性

随机推荐

  1. 沉淀,再出发:Maven的使用和规范

    沉淀,再出发:Maven的使用和规范 一.前言 Maven作为项目管理工具,在一个大型项目开发的每个阶段都有着很大的用处,为什么需要这个东西呢,还是为了消除不确定性,统一化管理,正如我们做的每一件事其 ...

  2. February 18 2017 Week 7 Saturday

    It is not easy to meet each other in such a big world. 世界这么大,能遇见不容易. Sometimes we choose to trust in ...

  3. Eclipse_java项目中导入外部jar文件

    非常多时候,在java项目中须要导入外部 .jar文件.比方:须要导入数据库连接驱动等等一些包.不熟悉eclipse的人可能会犯愁,事实上非常easy. ...过程例如以下:  在须要加入外部文件的项 ...

  4. 21、整合Druid数据源

    1).引入外部的数据源(Druid) <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> <dependenc ...

  5. 11、SpringBoot-CRUD-thymeleaf公共页面元素抽取

    thymeleaf公共页面元素抽取 存在一种现象:两个文件的代码只有一部分代码不一样 其余的均相同,此时就可以提取公共的代码去简化开发 .抽取公共片段 <div th:fragment=&quo ...

  6. C++自定义函数

    函数可以看成是用户为了解决某特定问题而定义的操作.除了在C++语法里自带的函数,有时候我们需要处理某个问题.但C++里并没有这个函数,这时我们就可以自己来定义一个函数实现需要的功能. 比如我们定义个求 ...

  7. SSM框架构建多模块之业务拆分实践

    在如下这两篇篇文章我都或多或少强调过业务分层方面的的方法和注意事项,感兴趣的可以看看: 系统设计和系统划分有定律可循 业务拆分的思考 之前是说,现在是做.以我个人博客为例,我的博客最初只是一个单体应用 ...

  8. JS异步编程 (1)

    JS异步编程 (1) 1.1 什么叫异步 异步(async)是相对于同步(sync)而言的,很好理解. 同步就是一件事一件事的执行.只有前一个任务执行完毕,才能执行后一个任务.而异步比如: setTi ...

  9. 解决MyEclipse JAVA EE无法识别Base64问题

    第一步:右击项目选择Build Path,选择Configure Build Path 第二步:点击JRE System Library选择右边的Edit 第三步:选择Alternate JRE,点击 ...

  10. ConfigurationManager.AppSettings方法

    一 配置文件概述: 应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序.配置文件的根节点是conf ...