【C++】2 C到C++的升级

C与C++的关系

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

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

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

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

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

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

C到C++的升级

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

#include <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("c=%p\n",&a);
    printf("end....\n");
    return 0;
}

struct关键字的加强

C语言中的struct定义了一组变量的集合
C语言中struct定义的标识符并不是一种新的类型
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()与intf(void)区别?

在C编译器中,int f()表示的返回值为int,参数无数个;int f(void) 返回值为int,空参数;
在C++编译器中,二者没有任何区别

C++中所有的标识符都必须显示的声明类型
C语言中的默认类型在C++中是不合法的

在C语言中

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

在C++中

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

#include<stdio.h>

struct Student
{
    const char *name;
    int age;
};
int f(int i)
{
    printf("i=%d\n",i);
}
int g()
{
    return 0;
}
int main()
{
    Student s1 = {"zhangyingli",30};
    Student s2 = {"zhang",30};
    return 0;
}

小结:

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

From zero to hero.

1 声望
4 粉丝
0 条评论
推荐阅读
【SPI】SPI总线
SPI是串行外设接口的缩写,SPI是一种高速的,全双工,同步的串行通信总线;SPI采用主从方式工作,一般有一个主设备或多个从设备;SPI需要至少4根线,MISO(主设备输入从设备输出)、MOSI(主设备输出从设备输入)...

YingLi1阅读 260

滚蛋吧,正则表达式!
你是不是也有这样的操作,比如你需要使用「电子邮箱正则表达式」,首先想到的就是直接百度上搜索一个,然后采用 CV 大法神奇地接入到你的代码中?

良许4阅读 2.3k

又一款眼前一亮的Linux终端工具!
今天给大家介绍一款最近发现的功能十分强大,颜值非常高的一款终端工具。这个神器我是在其他公众号文章上看到的,但他们都没把它的强大之处介绍明白,所以我自己体验一波后,再向大家分享自己的体验。

良许5阅读 1.8k

Linux终端居然也可以做文件浏览器?
大家好,我是良许。在抖音上做直播已经整整 5 个月了,我很自豪我一路坚持到了现在【笑脸】最近我在做直播的时候,也开始学习鱼皮大佬,直播写代码。当然我不懂 Java 后端,因此就写写自己擅长的 Shell 脚本。但...

良许1阅读 2.1k

C++编译器和链接器的完全指南
C++是一种强类型语言,它的编译和链接是程序开发过程中不可或缺的两个环节。编译器和链接器是两个非常重要的概念。本文将详细介绍C++中的编译器和链接器以及它们的工作原理和使用方法。

小万哥2阅读 1k

封面图
比cat更好用的命令!
但 cat 命令两个很重大的缺陷:1. 不能语法高亮输出;2. 文本太长的话无法翻页输出。正是这两个不足,使得 cat 只能用来查看行数不多的小文件。

良许2阅读 997

完了,良许直播中删库了……
大家好,我是良许。今天跟大家聊个尴尬的事,大家可以本着看热闹不嫌事大的心态来听我唠唠。经常来我直播间(视频号+抖音)的小伙伴都知道,我最近一直都在直播间手把手现场写 Shell 脚本。就在前天晚上,我写 Sh...

良许1阅读 1.3k

From zero to hero.

1 声望
4 粉丝
宣传栏