C到C++的升级关系及区别实例探究

 更新时间:2024年01月04日 10:03:21   作者:YingLi  
这篇文章主要为大家介绍了C到C++的升级关系及区别实例探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一、C与C++的关系

  • C++继承了所有的C特性
  • C++在C的基础上提供了更多的语法和特性
  • C++的设计目标是运行效率与开发效率的统一
  • c++更强调语言的实用性

所有的变量都可以在需要使用时在定义

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

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

二、C到C++的升级

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

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

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

C语言中无法获取register变量的地址,C++中可以取得register变量的地址

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

在C语言中,重复定义多个同名全局变量是合法的

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

C语言中多个同名的变量最终会被链接到全局数据区的同一个地址上

实例分析

#inlude <stdio.h>
int g_v;
//int g_v
int main(int argc,char*argv[])
{
  printf("Begin...\n");
  int c = 0;
  for (int i=1;i<=3; i++)
  {
     for (int j=1;j<=3; j++)
     {
         c +=i*j;
     }
  }
  printf("c = %d\n",c)
  register int a = 0;
  printf("&a=%p\n",&a);
  printf("End...\n");
  return 0;
}

struct关键字的加强

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

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

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

typedef struct _tag_student student;
struct _tag_student
{
    const char *name;
    int age;
}
struct student
{
   const char* name;
   int age;
}

C和C++中结构体的等价定义;

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

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

在C语言中

int f()表示返回值为int,接受任意参数的函数

f(void)表示返回值为int的无参函数

在C++中

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

#include <stdio.h>
struct Student
{
    const char* name;
    int age;
};
f(i)
{
    printf("i = %d\n", i);
}
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;
}

int f()与intf(void)有什么区别

在C语言中:

int f() :int类型的返回值,形参可接收无数个;
int f(void):int类型的返回值,形参不接收任何形参;

C++语言中:

int f()与int f(void)没有区别;

小结

  • C++更强调实用性,可以在任意地方声明变量
  • C++编译器能够更好的优化
  • C++ register只是一个兼容的作用
  • C++ 中的任意标识符都必须显示的指明类型

以上就是C到C++的升级关系及区别实例探究的详细内容,更多关于C到C++升级关系区别的资料请关注脚本之家其它相关文章!

相关文章

  • C++ COM编程之QueryInterface函数(一)

    C++ COM编程之QueryInterface函数(一)

    这篇文章主要介绍了C++ COM编程之QueryInterface函数(一),QueryInterface是组件本身提供对自己查询的一个接口,需要的朋友可以参考下
    2014-10-10
  • VS2019安装cbd调试器的实现步骤

    VS2019安装cbd调试器的实现步骤

    本文主要介绍了VS2019安装cbd调试器的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-12-12
  • C++中文件操作基础详解

    C++中文件操作基础详解

    这篇文章主要为大家详细介绍了C++中的一些文件操作基础详解,文中的示例代码讲解详细,对我们学习C++有一定帮助,需要的可以参考一下
    2022-06-06
  • C语言实现贪吃蛇小黑窗

    C语言实现贪吃蛇小黑窗

    这篇文章主要为大家详细介绍了C语言实现贪吃蛇小黑窗,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • C/C++通过HTTP实现文件上传与下载的示例详解

    C/C++通过HTTP实现文件上传与下载的示例详解

    WinInet是 Microsoft Windows 操作系统中的一个 API 集,用于提供对 Internet 相关功能的支持,它包括了一系列的函数,使得 Windows 应用程序能够进行网络通信、处理 HTTP 请求、FTP 操作等,本文给大家介绍了C/C++通过HTTP实现文件上传与下载,需要的朋友可以参考下
    2023-12-12
  • 基于c++计算矩形重叠面积代码实例

    基于c++计算矩形重叠面积代码实例

    这篇文章主要介绍了基于c++计算矩形重叠面积代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Qt数据库应用之实现通用数据库清理

    Qt数据库应用之实现通用数据库清理

    项目如果需要存储很多日志记录比如运行日志,时间长了记录数量非常多,数据库体积不断增大,对应数据库表的增删改查的效率不断降低,因此需要将早期的数据清理。本文将详细介绍一下通用数据库清理的实现,需要的可以参考一下
    2022-02-02
  • 一文带你深入了解C++中音频PCM数据

    一文带你深入了解C++中音频PCM数据

    PCM(Pulse Code Modulation)也被称为脉冲编码调制,是数字通信的编码方式之一。这篇文章主要和大家聊聊C++中音频PCM数据的相关操作,需要的可以参考一下
    2023-02-02
  • C语言数据结构之堆排序源代码

    C语言数据结构之堆排序源代码

    这篇文章主要为大家详细介绍了C语言数据结构之堆排序源代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • C语言 while for do while循环体详解用法

    C语言 while for do while循环体详解用法

    在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件
    2021-10-10

最新评论