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. bzoj 2111: [ZJOI2010]Perm 排列计数 (dp+卢卡斯定理)

    bzoj 2111: [ZJOI2010]Perm 排列计数 1 ≤ N ≤ 10^6, P≤ 10^9 题意:求1~N的排列有多少种小根堆 1: #include<cstdio> 2: ...

  2. java的串行化

    参考博客:Java 对象的串行化(Serialization) 1,什么是串行化 对象的寿命通常随着生成该对象的程序的终止而终止.有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复.我们把对象 ...

  3. BZOJ2882:工艺(SAM)

    Description 小敏和小燕是一对好朋友. 他们正在玩一种神奇的游戏,叫Minecraft. 他们现在要做一个由方块构成的长条工艺品.但是方块现在是乱的,而且由于机器的要求,他们只能做到把这个工 ...

  4. BZOJ 3289: Mato的文件管理 【莫队 + 树状数组】

    任意门:https://www.lydsy.com/JudgeOnline/problem.php?id=3289 3289: Mato的文件管理 Time Limit: 40 Sec  Memory ...

  5. js 获取网页宽/高度

    网页可见区域宽度: document.body.clientWidth 网页可见区域高度: document.body.clientHeight 网页可见区域宽度: document.body.off ...

  6. Windows 10推送的锁屏壁纸保存方法

    Windows 10推送的锁屏壁纸保存方法 工作中使用的系统为Windows 10,锁屏时显示的壁纸很漂亮,并且每天都会更新,有几张特别喜欢,于是就想这些壁纸到底保存在哪里呢?经过一番摸索,终于搞明白 ...

  7. 自定义的打印语句NSLog在控制台输出不完整的完美解决

    // 打印日志 debug #ifdef DEBUG // 调试状态, 打开LOG功能 #define APPLog( s, ... ) printf("class: <%p %s:( ...

  8. Android 中Dialog的使用

    本文是参考ProAndroid的第10章Working with Dialogs的内容,在合适的地方添加了作者自己的一些见解最终成文. Android 中的对话框是一个展示在当前窗口上的小一号的窗口, ...

  9. NodeJs仿阿帕奇实现浏览某一路径文件目录效果

    网页效果 这里实现的效果是将我的电脑下的某一路径文件展现在网页中 html网页代码: <h1>仿阿帕奇网页 </h1> <table> <tr> < ...

  10. WSO2 API Manager 替换mysql作为数据库,解决AuthorizationUtils Could not set authorizations for the root问题

    按照wso2官网(https://docs.wso2.com/display/ADMIN44x/Changing+to+MySQL)配置AM的数据库,想从H2换成Mysql5.7,费了将近一天的时间, ...