前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C与C++的升级关系

C与C++的升级关系

作者头像
程序手艺人
发布2018-05-18 15:33:32
8910
发布2018-05-18 15:33:32
举报
文章被收录于专栏:程序手艺人程序手艺人
  • C++继承了所有的C特性
  • C++在C的基础上提供了更多的语法和特性
  • C++的设计目标是运行效率与开发效率的统一
图1
图1

升级1

  • C++ 更强调语言的实用性
  • 所有变量都可以在需要使用时在定义
代码语言:javascript
复制
   int c = 0; 
    for(int i=1; i<=3; i++){
        for(int j=1; j<=3; j++){
            c += i *j;
        }
    }

对比: C语言中的变量都必须在作用域开始的位置定义

升级2

  • register 关键字请求编译器将局部变量存储于寄存器中
    • 在C++中依然支持register关键字
    • C++编译器有自己的优化方式
    • C语言中无法获取register变量的地址
    • C++中可以获取register变量的地址
    • C++编译器发现程序中需要取register变量的地址时,register对变量的声明变的无效

升级3

  • 在C语言中,重复定义多个同名的全局变量是合法的
    • C语言中多个同名的全局变量最终会被链接到全局数据区的同一地址空间上 
  • 在C++中, 不允许定义多个同名的全局变量

升级4

  • struct 关键字加强
    • C语言中的struct定义了一组变量的集合
    • C语言中struct定义的标识符并不是一种新的类型
    • C++中的struct用于定义一个全新的类型
图2
图2

升级5

  • C++中所有的标识符都必须显示的声明类型
  • C语言中的默认类型在C++中是不合法的
代码语言:javascript
复制
f(i){
  printf("i = %d\n",i);
}
g(){
  return 5;
}
  • 在C语言中
    • int f()表示返回值为int, 接受任意参数的函数
    • f(void) 表示返回值为int的无参函数
  • 在C++中
    • int f() 和 inf f(void) 具有相同的意义
    • 表示返回值为int 的无参函数

总结

  • C++更强调实用性, 可以在任意的地方声明变量
  • C++中的register只是一个兼容的作用
  • C++编译器能够更好的进行优化
  • C++中的任意标识符都必须显示的指明类型
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年03月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 升级1
  • 升级2
  • 升级3
  • 升级4
  • 升级5
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档