C++ 的加强主要表现在:类型的加强、面向对象支持

1、C++改进

C++更强调语言的实用性,所有的变量都可以再需要使用的时候再定义,C语言中的变量都必须在作用域开始的位置定义

int c = 0;
for (int i = 1; i < 3; i++)
{
for (int j = 1; j < 3; j++)
{
c += i * j;
}
}

register 关键字请求编译器将局部变量存储与寄存器中

  • 在C++中依然支持register关键字

  • C++ 编译器有自己的优化方式

    • C语言中无法获取register变量的地址

    • C++中可以取得register变量的地址

      C++编译器发现程序中需要取register变量的地址时,register对变量的声明变得无效

早期的C语言编译器不会对代码进行优化,因此register变量是一个很好的补充

2、同名变量的处理

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

在C++中,不允许定义多个同名的全局变量。

3、struct关键字的加强

C语言中的struct定义了一组变量的集合

C语言中的struct定义的标识符并不是一种新的类型

C++中的struct用于定义一个全新的类型

// C语言
typedef struct _tag_student Student;
// 将struct _tag_student类型起了一个别名Student
struct _tag_student{
const char * name;
int age;
} // C++
// struct定义一个全新的类型
struct Student
{
const char * name;
int age;
};

4、小思考

int f()int f(void)的区别:有没有区别,要看用什么编译器

  • 如果用C语言编译器,前面的函数类型是返回值为int,接收参数是任意个数参数,后面的函数表示返回值为int,不接收任何参数
  • 在C++中,这两种写法没有区别

5、默认类型

C++中所有的标识符都必须显示地声明类型

C语言中地默认类型在C++中是不合法的

f(i)
{
printf("i = %d\n", i);
}
g()
{
return 5;
}

在C语言中:

  • int f()表示返回值为 int, 接收任意参数的函数
  • f(void)表示返回值为int的无参函数

在C++中:

  • int f()int f(void)具有相同的意义,表示返回值为int的无参函数

C++中无默认类型,如果没有参数,就是不接受任何参数,int f(void)只是为了兼容C语言

C++ 不接受无返回值类型的函数,不允许默认类型

#include <stdio.h>

// c++中,定义了一个新的类型Student
struct Student
{
const char* name;
int age;
}; // C++中有问题,不合法
f(i)
{
printf("i = %d\n", i);
} // C++不合法
g()
{
return 5;
} int main(int argc, char *argv[])
{
Student s1 = {"Delphi", 30};
Student s2 = {"Tang", 30}; f(10); printf("g() = %d\n", g(1,2,3,4,5)); return 0;
}

6、总结

C++更强调实用性,可以在任意的地方声明变量

C++中的register只是一个兼容C的作用

C++编译器能够更好地进行优化

C++中地任意标识符都必须显示地指明类型

二、C到C++的升级的更多相关文章

  1. sharepoint2007就地升级2010系列(二)环境概述及升级前准备

    环境介绍:1台2GB的虚机 现在是windows server 2008 sp2 X64 +SQL 2005+SQL2005 sp3+sharepoint2007+sharepoint2007SP2 ...

  2. (十二).NET6 + React :升级!升级!还是***升级!!!+ IdentityServer4实战

    一.前言 此篇内容较多,我是一步一个脚印(坑),以至于写了好久,主要是这几部分:后台升级 .NET6  VS2022.前台升级Ant Design Pro V5 .前后台联调 IdentityServ ...

  3. phpwind8.7升级9.0.1过程(二)8.7正式升级9.0

    首先备份 1. 给本地做备份将网站根目录下面的所有文件先做备份. 2. 给本地数据库做备份 3. 了解升级的具体过程 phpwind8.7升级到9.0需要首先升级到phpwind9.0的原生版本即:2 ...

  4. HTML5进阶(二)HBuilder实现软件自动升级

    HBuilder实现软件自动升级 前言 移动APP开发好后需要实现软件自动升级功能,经过一番搜索,发现HBuilder具有"App资源在线升级更新"的功能,遂研究之. 经过一番测试 ...

  5. 【iCore4 双核心板_ARM】例程三十二:UART_IAP_ARM实验——更新升级STM32

    实验现象及操作说明: 1.本例程共有两个代码包,APP和IAP,IAP程序功能实现将APP程序升级至STM32中. 2.直接上电或烧写程序将执行升级的APP应用程序. BIN升级文件产生方法: 1.编 ...

  6. 【iCore3 双核心板】例程三十二:UART_IAP_ARM实验——更新升级STM32

    实验指导书及代码包下载: http://pan.baidu.com/s/1hrnLJwC iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  7. 【转】 基于TFTP协议的远程升级设计

    版权声明:本文为博主原创文章,未经博主允许不得转载.联系邮箱:zhzhchang@126.com 说明:由于CSDN博客编辑器对word格式近乎不支持,因此对表格使用了图片方式(最后一个表格未使用图片 ...

  8. 基于TFTP协议的远程升级设计

    说明:因为CSDN博客编辑器对word格式近乎不支持.因此对表格使用了图片方式(最后一个表格未使用图片格式.大家能够看看效果),CSDN博客编辑器上传图片十分不人性化(直接复制图片是不显示的),因此本 ...

  9. Windows AD域升级方

    前面的博客中我谈到了网络的基本概念和网络参考模型,今天我们来谈企业中常用的技术,Windows AD 域,今天我的笔记将重点讲解Windows AD 域的升级和迁移方法,通过3个小实验进行配置,真实环 ...

  10. HTML5进阶(三)HBuilder实现软件自动升级(优化篇)

    HBuilder实现软件自动升级(优化篇) 前言 受前篇博客<HTML5进阶(二)HBuilder实现软件自动升级>(点击查看详情)的影响,测试过程中发现APP自动更新还是存在问题,第一次 ...

随机推荐

  1. angular中使用canvas画布做验证码

    //填充画布,五位随机数 drawNumber(): void { this.clearCanvas(); let ctx: CanvasRenderingContext2D = this.myGra ...

  2. HDU-2588-GCD (欧拉函数)

    The greatest common divisor GCD(a,b) of two positive integers a and b,sometimes written (a,b),is the ...

  3. ACM-ICPC 2018 南京赛区网络预赛 E. AC Challenge (状态压缩DP)

    Dlsj is competing in a contest with n (0 < n \le 20)n(0<n≤20) problems. And he knows the answe ...

  4. LeetCode 233 Number of Digit One 某一范围内的整数包含1的数量

    Given an integer n, count the total number of digit 1 appearing in all non-negative integers less th ...

  5. 机器学习框架ML.NET学习笔记【2】入门之二元分类

    一.准备样本 接上一篇文章提到的问题:根据一个人的身高.体重来判断一个人的身材是否很好.但我手上没有样本数据,只能伪造一批数据了,伪造的数据比较标准,用来学习还是蛮合适的. 下面是我用来伪造数据的代码 ...

  6. HTML常用标签参考学习

    1.跑马灯标签 功能<marquee>...</marquee> 普通卷动<marquee behavior=slide>...</marquee> 滑 ...

  7. 寻找jar包的方法

    在项目开发中经常会遇到资源jar查找难的问题,一种使用maven ,另一种方法是: (1).使用下载地址:https://oss.sonatype.org/content/repositories/r ...

  8. WebClient实现文件下载详解(二)

    .Net2.0中新增了很多组件,WebClient就是其中一个,功能也很强大,今天拿WebClient做了一个小实验,只用到了一些很简单的功能就可以实现以前不好实现的功能,很方便. 简单介绍一下Web ...

  9. 本人常用的Phpstorm快捷键

    我设置的是eclipse的按键风格(按键习惯),不是phpstorm的风格 1.添加TODO(这个不是快捷键)://TODO 后面是说明,换行写实现代码 2.选择相同单词做一次性修改:Alt+J+鼠标 ...

  10. ThinkPHP添加扩展配置失败

    扩展配置可以支持自动加载额外的自定义配置文件,并且配置格式和项目配置一样.设置扩展配置的方式如下(多个文件用逗号分隔): // 加载扩展配置文件 'LOAD_EXT_CONFIG' => 'us ...