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. 一些有关PyCharm使用总结

    目前在这里,你能看见 license server Python版本配置 添加另外版本的Python 设置字体大小 关于编码 关于模版 安装好之后,第一个问题就是 license server 问题, ...

  2. aspnetcore配置log4net并添加全局异常处理

    第一步:在NuGet中引用log4net 第二步:创建log4net.config <?xml version="1.0" encoding="utf-8" ...

  3. 如何在mssql中获取最新自增ID的值

    @@IDENTITY 返回最后一个插入 IDENTITY 的值,这些操作包括:INSERT, SELECT INTO,或者 bulk copy.如果在给没有 IDENTITY 列的其他表插入记录,系统 ...

  4. Spark Mllib里相似度度量(基于余弦相似度计算不同用户之间相似性)(图文详解)

    不多说,直接上干货! 常见的推荐算法 1.基于关系规则的推荐 2.基于内容的推荐 3.人口统计式的推荐 4.协调过滤式的推荐 协调过滤算法,是一种基于群体用户或者物品的典型推荐算法,也是目前常用的推荐 ...

  5. Apache禁止访问网站子目录的方法

    在PHP网站开发中,基于WEB服务器和PHP网站程序代码的安全考虑,我们需要对相关的目录或者文件访问权限进行控制,以防止意外情况的发生,那么我们如何来实现这种功能呢?我们可以通过Apache来实现禁止 ...

  6. springboot相关的pom依赖文件

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  7. 浅析System.Console.WriteLine()

    浅析System.Console.WriteLine() Writeline()函数的功能向 StreamWriter 类写入指定字符串和一行字符,共有19个重载,其与Write()函数的主要区别在于 ...

  8. Android 桌面悬浮窗效果实现,仿360手机卫士悬浮窗效果

    首先是一个小的悬浮窗显示的是当前使用了百分之多少的内存,点击一下小悬浮窗,就会弹出一个大的悬浮窗,可以一键加速.好,我们现在就来模拟实现一下类似的效果. 先谈一下基本的实现原理,这种桌面悬浮窗的效果很 ...

  9. 【硬盘整理】使用UltimateDefrag将常用文件放置在磁盘最外圈

    使用方法未知.软件截图如下: 官方网站(英文):http://www.disktrix.com/ 汉化破解版V3.0下载地址:http://page2.dfpan.com/fs/7com9monca3 ...

  10. Java中的字符串问题

    本文章分为三个部分: 1.创建字符串对象的两种方式以及它们的存储方式 2.String a = new String("a")创建了几个对象的问题 3.字符串小例子 ------- ...