c++语言增强的地方

目录

1.对全局变量的检测能力

2.struct类型增强

3.c++中所有变量和函数都必须有类型

4.c++中新增的bool类型

5.三目运算符的加强

6.const的增强

7.对枚举的增强


1.对全局变量的检测能力

  • C语言中同时定义两个相同的全局变量编译器并不会报错,而c++中就会报重定义错误
#include<stdio.h>
int g_a;//bss段
int g_a=10;//data段
int main()
{printf("%d",g_a);//最后对打印出10return 0;
}
#include<iostream>
using namespace std;int g_val;
//int g_val = 20;//c++会报g_val重定义
int main(void)
{printf("%d",g_val);
}

2.struct类型增强

  • C语言中创建结构体类型的变量必须加struct关键字
#include<stdio.h>
struct student
{int id;char name[34];
};
int main()
{struct student s1;//student s1;//errreturn 0;
}
  • c++可以不加struct结构体关键字
#include<iostream>
struct student 
{int id;char name[43];
}
int main(void)
{student s1;
}

3.c++中所有变量和函数都必须有类型

  • C语言接受没有返回类型的函数,接受单个形参传递多个实参的情况
#include<stdio.h>
f()//函数没有返回类型默认返回类型为整形,所以在C语言中不会报错
{return 10;
}
int g(int a)
{return 10;
}
int main()
{f();g(20,30,40,50);//C语言接受单个形参传递多个实参return 0;
}

4.c++中新增的bool类型

#include<iostream>
using namespace std;
int main()
{bool flag=true;flag = true;cout<<"flag(true)="<<flag<<endl;flag = false;cout<<"flag(false)="<<flag<<endl;flag=20;cout<<"flag="<<flag<<endl;return 0;
}
  • bool类型的变量的值只有0和1两种

5.三目运算符的加强

  • C语言中三目操作符不能当左值来使用
#include<stdio.h>
int main()
{int a=10;int b=20;int c=0;//左值  右值c=(a<b?a:b);printf("c=%d\n",c);(a<b?a:b)=50;//C语言中三目运算符不能当左值//10//10=50;return 0;
}
  • c++中三目操作符可以当左值来使用

6.const的增强

int const b; //代表一个常整形数

const int* c;//c是一个指向常整型数的指针(所指向的内存数据不能被修改,但本身可以修改)

int* const d;//常指针(指针变量不能被修改,但是他所指向的空间可以被修改)

const int* const e;//一个指向常整形的常指针(指针和它所在的内存空间,均不能被修改)

  • C语言中const修饰的变量并不能改变成为常量
#include<stdio.h>
int main()
{const int a=10;int* p=&a;*p=70;return 0;
}

最后a会改变成为70,说明被const修饰的a并没有成为常量

  • c++中const修饰的变量就算通过指针也不会被改变

#include<iostream>
using namespace std;
int main()
{const int a=10;int* p=(int*)&a;*p=20;cout<<"a="<<endl;cout<<"*p="<<*p<<endl;return 0;
}

c++中const修饰的变量在赋值时并不是在栈区开辟空间,而是在符号表。

思考:常量可以取地址吗??

答:如果对一个常量取地址,编译器会临时开辟一个空间,让这个指针存放这个临时空间的地址

7.对枚举的增强

C语言中枚举本质就是整形,枚举变量可以用任意整形赋值。而c++中枚举变量,只能用枚举出来的元素初始化。

#include<iostream>
using namespace std;
enum season
{SPR,SUM,AUT,WIN,
};
int main(void)
{enum season s=SPR;//s=0 //err  但是C语言可以通过s=SUM;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/807899.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在隐私计算应用中和数链具备哪些技术特点?

在加速“可信数字化”进程的背景下&#xff0c;我国区块链产业将在打造新型平台经济&#xff0c;开启共享经济新时代的同时&#xff0c;带动数字经济“脱虚向实”服务实体经济。 和数软件在加速数字化进程的同时&#xff0c;进一步服务实体经济&#xff0c;提高实体经济的活力…

抖音IP打造品牌规划流量运营方案推广计划书

【干货资料持续更新&#xff0c;以防走丢】 抖音IP打造品牌规划流量运营方案推广计划书 部分资料预览 资料部分是网络整理&#xff0c;仅供学习参考。 50页可编辑&#xff08;完整资料包含以下内容&#xff09; 目录 详细的抖音运营方案&#xff0c;帮助品牌在抖音平台上提升…

如何切换PHP版本

如果服务器上安装了多个php&#xff0c;可能会导致默认的php版本错误&#xff0c;无法启动swoole等服务&#xff0c; 查看命令行的php版本方法&#xff1a;https://q.crmeb.com/thread/9921 解决方法如下&#xff0c;选一个即可&#xff1a; 一、切换命令行php版本&#xff0c…

3d怎么按路径制作模型---模大狮模型网

在3D建模中&#xff0c;按路径制作模型是一种常见的技术&#xff0c;特别适用于创建曲线、管道、绳索等线性形状的物体。虽然这项技术可能对初学者来说有些复杂&#xff0c;但通过一步步的指导和实践&#xff0c;你将能够掌握它。本文将详细介绍按路径制作模型的步骤&#xff0…

宁盾radius认证服务器软件如何实现802.1X认证/Portal认证上网(portal web入网认证)

一、什么是802.1X认证和Portal认证以及有什么区别 随着企业网络规模的不断扩大和网络安全威胁的日益加剧&#xff0c;有效的网络认证机制成为保障网络安全的关键。其中&#xff0c;802.1X认证和Portal认证是两种常见的网络认证方式&#xff0c;它们各有特点&#xff0c;适用于…

手动实现简易版RPC(下)

手动实现简易版RPC(下) 前言 什么是RPC&#xff1f;它的原理是什么&#xff1f;它有什么特点&#xff1f;如果让你实现一个RPC框架&#xff0c;你会如何是实现&#xff1f;带着这些问题&#xff0c;开始今天的学习。 接上一篇博客 手动实现简易版RPC&#xff08;上&#xff…

【git】为什么git要有 暂存区

关于git暂存区的个人理解 暂存区 一般存放在 .git 目录下的 index 文件&#xff08;.git/index&#xff09;中。 git中的修改需要先add到暂存区&#xff0c;再commit到本地库&#xff0c;乍一看好像是多此一举了。 看了些别人的讨论&#xff0c;自己也想了很久&#xff0c;…

二叉树应用——最优二叉树(Huffman树)、贪心算法—— Huffman编码

1、外部带权外部路径长度、Huffman树 从图中可以看出&#xff0c;深度越浅的叶子结点权重越大&#xff0c;深度越深的叶子结点权重越小的话&#xff0c;得出的带权外部路径长度越小。 Huffman树就是使得外部带权路径最小的二叉树 2、如何构造Huffman树 &#xff08;1&#xf…

Fortinet年度重磅发布 ,FortiOS 7.6高能登场

近日&#xff0c;专注于推动网络与安全融合的全球网络安全领导者 Fortinet&#xff08;NASDAQ&#xff1a;FTNT&#xff09;&#xff0c;宣布推出全新 FortiOS 操作系统 7.6 版本&#xff0c;并为旗下网络安全平台 Fortinet Security Fabric 全新集成生成式 AI、数据保护、托管…

Web---robots协议详解

在Web中&#xff0c;robots协议&#xff08;也称为robots.txt&#xff09;是一种文本文件&#xff0c;用于向搜索引擎机器人&#xff08;通常称为爬虫&#xff09;提供指导&#xff0c;以指示它们哪些页面可以抓取&#xff0c;哪些页面应该忽略。robots.txt文件位于网站的根目录…

C++内存管理(个人笔记)

C内存管理 1.C内存分布2.C内存管理方式2.1new/delete操作内置类型2.2new和delete操作自定义类型 3.operator new与operator delete函数4.面试题4.1malloc/free和new/delete的区别4.2什么是内存泄漏,内存泄漏的危害4.3如何避免内存泄漏 1.C内存分布 int globalVar 1; static i…

Java22:HTMLCSSJS

一&#xff1a;HTML 1.html入门 1.html文件的根标签<html></html>所有的其他标签都要在这个标签中间 2.html根标签下有两个一级子标签 <head></head> 头标签 定义那些不直接展示在页面主题上但是又很重要的内容 1.字符…

JSP内置对象session

1.session对象&#xff0c;为会话对象&#xff0c;封装当前用户会话中的有关信息。 网页数据传递是单向传递的&#xff0c;session能够将数据进行多个数据互相传递&#xff0c;使用的是同一个东西 实例1&#xff1a; 利用session对象String getId() 方法获取当前session对象…

【每日刷题】Day10

【每日刷题】Day10 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f345; 目录 1. 环形链表的约瑟夫问题_牛客题霸_牛客网 (nowcoder.com) 2. 21. 合并两个有序链表 - 力扣&#xff08;LeetCode&#xff09; 3. 152…

【Linux】 探索Linux中的cat指令:常用用法一览

你没想象中那么恋旧 回忆换不回你的温柔 最后也不是故作冷漠 转过头我怎么有一滴泪落 我没想象中那么脆弱 分开后心容眼眉消瘦 一起踏过了几座春秋 领悟了爱不是追逐占有 &#x1f3b5; 许嵩《想象之中》 在Linux和Unix系统中&#xff0c;cat&#xff08;…

灌醉阿里P8大佬!获取内部二进制网络安全学习路线(建议收藏

0x01 二进制学习路线 1.踏实的基础。 基础是很重要的&#xff0c;可以通过计算机体系结构来学习&#xff0c;当然肯定不只是计算机体系结构&#xff0c;还有很多的知识。计算机科学系统基础知识的积累和沉淀&#xff0c;提升自己的计算机科学素养&#xff0c;理解计算机的工作…

windows中anaconda下创建新的新的jupyter环境

https://blog.csdn.net/weixin_43491496/article/details/130325001?spm1001.2014.3001.5502 这里写目录标题 1.1界面化创建虚拟环境1.2命令行创建虚拟环境2.查看是否创建成功3.激活虚拟环境pylessonppt4.更改工作目录5.删除6.查看是否删除成功 1.1界面化创建虚拟环境 1.2命令…

润乾报表平台 InputServlet 任意文件上传漏洞复现

0x01 产品简介 润乾报表是一个纯JAVA的企业级报表工具,支持对J2EE系统的嵌入式部署,无缝集成。服务器端支持各种常见的操作系统,支持各种常见的关系数据库和各类J2 EE的应用服务器,客户端采用标准纯html方式展现,支持ie和netscape, 润乾报表是领先的企业级报表分析软件。…

CPI高于预期!比特币与美股“脱钩”,下挫后急拉盘!减半“护航”下,加密市场四月剧本如何走?

美国劳工部于昨&#xff08;10&#xff09;晚公布了最新的CPI&#xff08;消费者物价指数&#xff09;数据&#xff0c;显示美国3月CPI年增幅达3.5%&#xff0c;不只高于前月的年增3.2%&#xff0c;也高于市场预估的3.4%&#xff0c;表明通货膨胀依然顽固。 高于预期的CPI数据释…

c++和python基本数据类型比较

以下是 C 和 Python 中一些基本数据类型的比较&#xff1a; 1. 整数类型&#xff1a; C&#xff1a; C 中的整数类型包括 int, short, long, long long 等&#xff0c;它们的大小和范围取决于编译器和操作系统。 Python&#xff1a; Python 中只有一个整数类型 int&#xff0…