C++基础 (4章)知识点:从C到C++语法上的区别

C++与C语言的区别 1.C++的创建历程: 20世纪70年代中期,Bjarne Stroustrup在剑桥大学计算机中心工作。他使用过Simula和ALGOL,接触过C。他对Simula的类体系感受颇深,对ALGOL的结构也很有研究,深知运行效率的意义。既要编程简单、正确可靠,又要运行高效、可移植,是Bjarne Stroustrup的初衷。以C为背景,以Simula思想为基础,正好符合他的设想。1979年,Bjam... 阅读详情

4.1全局变量的检测增强

c语言中通过

int a = 10;//定义
int a;	 //声明

c++中

int a = 10;
//int a; //这里会发生错误,提示 int a 重定义

C++中所有的变量和函数都必须有类型

c语言中的形参可以不用声明数据类型

int func1(i)
{
	printf("%d\n", i);
	return 0;
}
int func2(i)
{
	printf("%s\n", i);
	return 0;
}

c++中不可

4.3 更严格的类型转换

C++中不同类型的变量是不能直接赋值的,需要相应的强转

typedef enum COLOR {GREEN,RED,YELLOW} color;
void c2cpp_test_4_3()
{
	color mycolor = GREEN;
	//mycolor = 10; //c中能通过, c++中不能通过因为mycolor是color类型不能被其他类型赋值
}

4.4 struct类型加强

c语言中定义结构体变量时需要添加struct关键字,而c++中不需要
c语言中的结构体只能定义成员变量,不能定义成员函数,c++中既可以定义成员变量,也可以定义成员函数

struct cppstruct {
	string mName;
	int mAge;
	void setName(string name) { mName = name; }
	void setAge(int age) { mAge = age; }
	void showcppstruct()
	{
		cout << "name:" << mName << "Age:" << mAge << endl;
	}
};
void c2cpp_test_4_4()
{
	cppstruct cpp;
	cpp.setName("4.4");
	cpp.setAge(1223);
	cpp.showcppstruct();
}

新增bool类型关键字

bool类型占1字节大小(但只是用其中一位), 值为 true或false,并在给bool类型变量赋值时若所赋的值为非零,则其变量的值为true。

void c2cpp_test_4_5()
{
	cout << sizeof(false) << endl;
	bool flag = true;
	flag = 100;	//flag 仍为1 
	cout << flag << endl;
}

4.6三目运算符功能增强

c语言中三目运算表达式返回值为数据值,为右值,不能赋值

int a = 10;
int b = 20;
printf("ret:%d\n", a > b ? a : b);   //返回20 此时变量 a = 10 , b = 20 

c++中三目运算表达式返回值为变量本身的引用,为左值,可以赋值。

int e = 10;
int b = 20;

void c2cpp_test_4_6()
{
	printf("ret:%d\n", e > b ? e : b);   //返回 b  此时变量 a = 10 , b =20
	//c++新用法
	(e > b ? e : b) = 100;
	printf("b:%d\n", b);   //返回 b  此时变量 a = 10 , b =1001
}

C/C++中的const

const概念:const字面意思是常量,不变的,它是c/c++中的一个关键字,是一个限定符,它用来限定一个变量不允许改变,它将一个对象转换成一个常量。

const int const_test = 10; 
// const_test = 100; //报错

全局范围中:
在c语言中的const直接分配内存到只读数据段,该const修饰的变量具有extern功能是外部链接的。
在c++中,const不必创建内存,全局const当声明extern或者对变量进行取地址时,编译器会分配存储地址,变量存储在只读数据段,两个都受到只读数据段的保护,不可修改,且const不具备外部链接功能,只能在本文件中使用。

局部范围中:
语言中局部const存储在堆栈区中,只是不能通过变量直接修改const只读变量的值,但是可以跳过编译器的检查,通过指针间修改const值。
c++中对于局部的const变量要区别对待:
(1)对于基础数据类型,也就是const int a = 10这种,编译器会把它放到符号表中,不分配内存,当对其进行取地址操作时,会分配内存。
(2)对于基础数据类型,如果用一个变量初始化const变量,如果const int a = b,那么就会给 a分配内存。

void c2cpp_test_4_7()
{
	const int constA = 10;
	int *p = (int *)&constA;
	*p = 300;
	cout << "constA:" << constA << endl;
	cout << "*p:" << *p << endl;
	int d = 10;
	const int a = d;
	int * p2 = (int *)&a;
	*p2 = 300;
	cout << "a:" << a << endl;
	cout << "d:" << a << endl;
	cout << "*p2:" << *p << endl;
}

运行结果:

constA:10
*p:300
a:300
d:300
*p2:300
C++中文件后缀的区别:cxx、cpp和txx,c、cc和cpp、hpp和h等 文章目录1. cxx、cpp和txx 又开始接触C++了,接触我对代码一开始认识的内容咧,加油 1. cxx、cpp和txx 参考: ITK官方论坛:[Insight-users] Difference between .cxx and .cpp, .txx and .h OSCHINA开源中国:txx cxx cpp 的区别 github的issue:Recognize *.cxx, *.hxx, *.tpp, *txx, *.ipp, and *.ixx files as C++ #539 stack 阅读详情

相关推荐

深入浅出:.sh文件在Linux系统中的实战应用与技巧

本文深入浅出地介绍了.sh文件在Linux系统中的实战应用与技巧。从基础概念入手,详细讲解了Bash脚本的运行方法、权限管理,并通过编写自动化备份脚本等实例,展示了如何利用Shell脚本提升工作效率。文章还涵盖了脚本调试、错误处理以及函数、参数解析等进阶技巧,帮助读者从入门到精通,掌握这一强大的自动化工具。

weixin_29243279的博客 346

C++和C语言常用语法对比

这里写自定义目录标题C语言与C++的区别:1.头文件2. 结构体struct3.动态数组的创建与删除4.函数顺序问题5.类(class) 前言: C语言与C++的区别: 1,全新的程序程序思维,C语言是面向过程的,而C++是面向对象的。 2,C语言有标准的函数库,它们松散的,只是把功能相同的函数放在一个头文件中;而C++对于大多数的函数都是有集成的很紧密,特别是C语言中没有的C++中的API是对Window系统的大多数API有机的组合,是一个集体。但你也可能单独调用API。 3,特别是C++中的图形处理,它

haoweixl的博客 6632

PLS-PM with R 偏最小二乘路径建模 (R语言)

1. 引入 1.1. 安装plspm包 plspm 是一个用于执行偏最小二乘路径建模分析的 r 程序包。 在 CRAN 上可以免费下载: Http://cran.r-project.org/web/packages/plspm/index.html. 此后,通过以下代码在r中安装并加载该程序包即可。 install.packages("plspm") library("plspm") 2. 一些简单概念 2.1. 潜变量和观测变量 不少变量如满意度、成功指数是无法通过观测得到

Wowlittlemoon的博客 1万+

C和C++的区别大赏

背景: 我在大学学过C++,没有学C。 到了公司,直接用C从事开发,虽然感觉C++应该都包含C语言的东西了,不过慢慢的还是发现了一些差异, 所以,开启本系列博客,记录C和C++的差异。 C++的语法几乎兼容了所有C语言的语法,唯一的例外就是C++没有变长数组。 C和C++的区别(1)常量和只读变量、数组定义 https://blog.youkuaiyun.com/nameofcsdn/article/details/109271874 C和C++的区别(2)结构体https://blog.csdn...

nameofcsdn的博客 3568

从PX4的FRD到Mavros的FLU:手把手教你正确配置`setpoint_raw/local`话题发布无人机目标点

本文详细解析了PX4的FRD与Mavros的FLU坐标系转换问题,手把手教你正确配置`setpoint_raw/local`话题发布无人机目标点。通过实战指南和常见错误排查,帮助开发者避免方向错乱问题,提升无人机控制精度。

weixin_33712987的博客 422

西门子1200PLC编程实战:OB、FC、FB与DB的深度解析与应用技巧

本文深度解析西门子1200PLC编程中OB、FC、FB与DB四大核心功能块的应用技巧。通过工厂化比喻,阐明OB作为程序总调度、FC作为可重用函数、FB作为带记忆的智能设备以及DB作为数据仓库的角色与关系,并提供实战技巧,帮助工程师构建结构清晰、易于维护的高效PLC程序。

weixin_29280657的博客 440

C++语法和C不同之处

在考计算机的研究生考试中,经常需要学习C和C++这两门语言,大多数的人在大学期间已经学习了C语言,而C++跟C的基础语言又十分相似,我也是在学习的过程中找到了这些不同之处,希望对你有所帮助。 一、应用场合 C语言:C语言是结构化和模块化的语言,是面向过程的。当程序的规模较小时,C语言运用起来得心应手。但是当问题比较复杂、程序的规模比较大的时候,C语言就会展现出它的局限性。 C++:正是因为有大规模...

Mamba的博客 7188

多核异构处理器核间通信:从共享内存到RPMsg协议的实战解析

在多核异构处理器架构中,核间通信是实现高效协同计算的核心技术。其基本原理是通过共享内存作为数据交换的物理媒介,配合硬件信号机制实现同步与通知。从技术价值看,它解决了不同架构核心间的数据共享与指令协同问题,是释放异构计算潜力的关键。在应用场景上,该技术广泛应用于智能物联网设备、汽车电子和工业控制等领域,用于连接高性能应用处理器与实时微控制器。本文以典型的ARM Cortex-A与Cortex-M组合为例,深入剖析了基于共享内存和RPMsg协议的通信机制,涵盖了从硬件基础到软件协议栈的完整实现链路,并提供了针对

weixin_26969269的博客 447

C和C++的一些语法区别

①struct 在C语言中,试用定义的struct类型的变量方式:struct [定义的变量] [生成的变量];在C++语言中,试用定义的struct类型的变量方式:struct [定义的变量] [生成的变量]或者[定义的变量] [生成的变量]。 在C语言中struct定义的变量中不能有函数,而在C++中可以有函数。 ②函数的参数以及返回值(以test()为例) C...

小哥哥咯的博客 1万+

DirectX修复工具使用技巧之二——手动修复C++创建失败的文件

最后更新:2021-2-25 随着V4.0正式版的发布,近来有部分用户来咨询如何解决C++文件创建失败的问题。在此我将以解决最常见的C++2015-2019文件创建失败为例,向大家演示一下在线修复的方法,其他C++或文件的方法大同小异。此次操作以Windows 7为例,其他系统相应参考即可。 首先,如果希望程序能手动在线修复创建失败的失败,请首先确定您使用的V4.0.2版或更高版本,老版本不支持此功能。查看程序版本的方式可以把鼠标放在DirectX Repair.e...

VBcom的专栏 6万+

人形机器人硬件电路设计入门

人形机器人属于。

blotemj.blog.youkuaiyun.com 229

C/C++面试笔试知识点总结

C/C++面试问题 1 const关键字的作用? 1)欲阻止一个变量被改变,可使用const,在定义该const变量时,需先初始化,以后就没有机会改变他了; 2)对指针而言,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const; 3)在一个函数声明中,const可以修饰形参表明他是一个输入参数,在函数内部不可以改变其值; 4)对于类的成员函数,有时候必须指定其为const类型,表明其是一个常函数,不能修改类的成员变量; 5)对于类的成员函数,有时候必须指定其返回值为

weixin_42538789的博客 1万+

2025华为杯第二十二届中国研究生数学建模竞赛D题:低空湍流监测及最优航路规划 - 完整解题分析+完整MATLAB源码!(上篇)

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 2584

.c与.cpp的区别解析

这几天在练习数据结构等知识的时候,有时遇见文件保存为c后缀则能编译通过,有时又是保存cpp后缀才能通过。对于这个都没能区分清,是自己的基本功问题,于是百度了一下。幸好有许多和我一样有问题的人。   其实简单来说,cpp就是编译c++文件,支持c++语法,而c就是编译c语言文件,支持c语言。2者的区别就在于语法和编译时的确别吧。   当然,对于类的引用和某些函数都是应该区别对待的。具体的内容可以...

小白的逆袭 3万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

C++ 基础语法

目录 在main执行之前和之后执行的代码可能是什么?指针和引用的区别在传递函数参数时,什么时候该使用指针,什么时候该使用引用呢?你觉得堆快一点还是栈快一点?区别以下指针类型?被free回收的内存是立即返还给操作系统吗?宏定义和函数有何区别?变量声明和定义区别?定义和声明的区别a和&a有什么区别?数组名和指针(这里为指向数组首元素的指针)区别?C++中const和static的作用C++的顶层const和底层constfinal和override关键字拷贝初始化和直接初始化初始化和赋值的区别C和C++

HENRYyangtuo的博客 3596

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C++(1)基础语法

C++是一种通用编程语言,由Bjarne Stroustrup在贝尔实验室工作时于1979年开始开发。C++最初被命名为"C with Classes",旨在扩展C语言以支持面向对象编程。随着时间的推移,C++不断发展,引入了许多新特性,如异常处理、模板、标准模板库(STL)等。1998年,C++第一个国际标准ISO/IEC 14882:1998发布,使其成为一种成熟、稳定且广泛使用的编程语言。

梅花香自苦寒来,宝剑锋从磨砺出。 3908

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

从 C 到 C++:快速掌握 C++ 的入门语法

C++入门基础

cui_ruicheng的博客 1797

C++与C的语法区别1

CPP  cin //#include//C风格 #include #include using namespace std; void main1() { //char str[20] = { "tasklist & pause" };//C风格 char str[20]{ "tasklist&pause" };//CPP风格 system(str); cin >> str;//

ChasingMoon的博客 2702

C++:部分基础语法知识点

定义命名空间,需要用到namespace关键字,后面跟一个命名空间的名字,然后接一对{}即可,{}中为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace只能定义全局,也可以嵌套定义。C++标准库都放在一个叫std(standard)的命名空间中。namespace的本质是定义一个域,这个域跟全局域各自独立,不同的域可以定义同名变量,所以下面的rand就不会冲突了。int main()//默认是访问的是全局的rand函数指针。

2501_92822111的博客 970

c++和c语言的区别

C++与C语言在语法上的区别 C++和C语言的语法有诸多不同之处。 一、头文件在C语言中,所有的头文件都带后缀.h,例如stdio.h用于标准输入输出操作。而C++中,标准库中的类和函数是在命名空间std中声明的,C++有系统提供的头文件不带后缀.h,像<iostream>用于输入输出流操作。不过,用户自己编制的头文件可以有后缀.h。 二、输入/输出函数 C语言 C语言使用scanf和printf进行输入输出操作。例如,对于整型变量a和双精度变量b,可以这样输入输出:

你猜我是谁? 2965

C++面试锦囊-基础语法篇

预处理:g++ -E hello.c -o hello.i。处理源码中的预处理指令(以#开头的命令),生成纯文本代码。编译:g++ -S hello.i -o hello.s。包含(词法分析、语法分析、语义分析、代码优化、生成汇编)汇编:gcc -c hello.s -o hello.o。链接:g++ hello.o -o hello。包含(宏替换、头文件包含、条件编译、删除注释)包含(符号解析、地址重定位、库文件链接)将汇编代码转换为机器码(目标文件)- 面向对象的语言(多范式、泛型)

Somnambulist_Leon的博客 979

C/C++面试常考知识点

C/C++基础部分 C++和C的区别 设计思想上: C++是面向对象的语言,而C是面向过程的结构化编程语言。 语法上: C++具有封装、继承和多态三种特性; C++相比C,增加多许多类型安全的功能,比如强制类型转换、 C++支持范式编程,比如模板类、函数模板等。 C++中static关键字的作用 全局静态变量 在全局变量前加上关键字static,全局变量就定义成一个全局静态变量。 静态存储区,在整个程序运行期间一直存在。 初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显

Ternence_zq的博客 7160

【C++语法】基于C语言补充的一些基础C++语法

C++是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。补充C语言语法的不足,以及C++是如何对C语言设计不合理的地方进行优化的,比如:作用域方面、IO方面、函数方面、指针方面、宏方面等。为后续类和对象学习打基础因为C++是在C的基础上扩展和补充,所以在C++中是兼容C语言的,C语言的语法都可以在C++中使用!!!定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。

记录学习点滴 1623

C ++初阶:C++入门级知识点

言C++之言,聊C++之识,以C++会友,共向远方。各位博友的各位你们好啊,这里是持续分享C++知识的小赵同学,今天要分享的C++知识是C++入门知识点,在这一章,小赵将会向大家展开聊聊C++入门知识点。✊在上一章,我们算是初步入门了C++的基础知识,知道了C++中有命名空间,域等新东西的引入,那么这一章我们继续去学习C++的一些基础知识。

zcg3063126760的博客 2279

【C++】C++基础语法

C++基础语法呢,有非常多的细节,需要大家慢慢来摸索,仔细的回顾,反复的复习

ChaoFreeandeasy_的博客 5166

C++ ——从C到C++

(1)C++知识点概念内容比较多,需要反复复习(2)偏理论,有的内容不理解,可以先背下来,后续可能会理解更深(3)学好编程要多练习,简单的也要手写确认一遍,记笔记(4)学习过程中不可能每个知识点都100%懂,有些内容可能经过多年的程序开发实践才领悟,所以即使有不懂的,也按进度计划前行。

2301_81699298的博客 2654
上一篇: C++基础 (番外篇)关键字考点
下一篇: C++基础 (5章)知识点:引用
瓜皮张先生
博客等级 码龄8年 23粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值