C++—C++程序基础

文章目录

  • 1 数据类型
    • 1.1 基本数据类型
    • 1.2 字面值常量
    • 1.3 左值和右值
    • 1.4 引用与指针
  • 2 基本输入输出
    • 2.1 输出
    • 2.2 输入
  • 3 函数
    • 3.1 内联函数
    • 3.2 函数的重载

1 数据类型

1.1 基本数据类型

在C++中,除了C语言中的int,char,float,double,void这些基本数据类型外,还增加了以下几种数据类型

类型类型名字节数
bool布尔型1
wchar_t宽字符类型2
char16_tUnicode类型2
char32_tUnicode类型4

其中布尔型只有两种取值,分别是真(1)和假(0)。

1.2 字面值常量

对于字面值常量,有如下规则

字面值常量类型默认类型其他
整型int后缀加“u/U”表示无符号int型,加后缀“l/L”表示long int型,后缀加“ll/LL”表示long long int型
浮点型double后缀加“f/F”表示float型,后追加“l/L”表示long double型

除了上面介绍的,还有字符型和字符串型。字符型字面值用一对单引号括起来,字符串型字面值用一对双引号括起来。字符型和字符串型字面值,前缀加“u”表示为“char16_t”类型。前缀加“U”表示为“char32_t”类型。前缀加“L”表示宽字符型“wchar_t”。加前缀“u8”表示字符串字面值编码采用UTF-8格式。

1.3 左值和右值

左值实质上是内存的位置,左值可以出现在赋值号的左边或者右边。
右值实质是数值,右值可以出现在赋值号右边,但是不能出现在赋值号左边。

1.4 引用与指针

可以通过&x来声明对一个变量的引用,其中x是要引用的变量。引用的实质并不是复制,而是给要引用的变量起了一个别名。引用在定义时就必须被初始化。这里看一个简单的示例

int x = 10;
int &i = x;   // 引用x

此外,必须用对象对引用进行初始化,不能是字面值常量或者表达式。引用提供了与指针相同的功能,但是比指针更加直观,更加容易理解。引用与指针的不同,主要有以下几点

  • 不存在空引用。引用必须连接到一个合法的对象。
  • 一旦引用被初始化为一个对象,就不能再引用另一个对象。指针可以指向另一个对象。
  • 引用必须在创建时被初始化。指针在创建时可以不进行初始化(但是在使用指针前必须对指针进行初始化)。

2 基本输入输出

在C语言中,基本的输入输出函数可以通过包含stdio的标准I/O库进行处理。stdio的标准I/O库在C++中也可以使用,但是在C++中使用的更多的是iostream的I/O流库实际上就是每个输入输出设备输入/出的字节(数据)。使用 C++的标准I/O流库时,必须包括下面两个头文件

#include<iostream>
#include<iomanip>

iostream文件提供基本的输入/输出功能,iomanip 文件提供格式化的功能。

2.1 输出

输出数据时的语法如下

int a = 10;
cout << a;   // 输出a的值

需要换行时,使用下面的语句

cout << endl;
int a = 10;
cout << a << endl;   // 输出a的值

endl的功能是换行,并清除输出缓冲区。

2.2 输入

输入的写法与输出类似

cout >> a;

3 函数

在C++中,函数的定义,声明和调用与C语言相同,这里就不再赘述了。

3.1 内联函数

在定义函数时,在最前面加上inline,函数就变成了内联函数。内联函数的基本形式为

inline 函数返回类型 函数名 (参数列表)

内联函数与其他函数的不同在于,在调用普通函数时,会有一个压栈和出栈的过程。但是在调用内联函数时,编译器会将内联函数的函数体直接放在被调用的地方,省去了调用普通函数时栈记录的创建和释放的开销。通过一个图简单阐述一下内联函数和普通函数在调用时的不同

内联函数与普通函数在被调用时的区别

使用内联函数时应该注意以下几个问题

  • 在一个文件中定义的内联函数不能在另一个文件中使用。它们通常放在头文件中共享。
  • 内联函数应该简洁,只有几个语句,如果语句较多,不适合定义为内联函数。
  • 内联函数体中不能有循环语句、if 语句或 switch 语句,否则函数定义时即使有 imnline关键字,编译器也会把该函数作为非内联函数处理。
  • 内联函数要在函数被调用之前声明。

3.2 函数的重载

C++中,当有一组函数完成相似功能时,函数名允许重复使用,编译器根据函数输入参数的个数或类型来判断调用哪一个函数,这就是函数的重载。对于重载函数,只要它的输入参数中参数个数或类型不同,就视为不同的函数。如果找不到输入参数形式对应的函数,编译器就会报错。

在使用重载函数时需要注意以下几点

  • 重载函数必须是功能相似的函数。
  • 函数的形参变量名不同不能作为函数重载的依据。

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

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

相关文章

(37)安全开关

文章目录 前言 37.1 LED的含义 37.2 配置安全开关 37.3 使用安全开关强制更新I/O板固件 前言 一个安全开关可以用来启用/禁用电机和伺服的输出。该开关控制飞行器的"安全"状态。当处于这种状态时&#xff0c;电机被阻止运行&#xff08;除了在 Planes MANUAL 模…

Redis 实现库存扣减

在日常开发中有很多地方都有类似扣减库存的操作&#xff0c;比如电商系统中的商品库存&#xff0c;抽奖系统中的奖品库存等。这次分享的是库存的操作怎么防止商品被超卖。 解决方案 基于数据库单库存基于数据库多库存基于redis 解决思路 使用mysql数据库&#xff0c;使用一个…

【javaEE面试题(四)线程不安全的原因】【1. 修改共享数据 2. 操作不是原子性 3. 内存可见性 4. 代码顺序性】

4. 多线程带来的的风险-线程安全 (重点) 4.1 观察线程不安全 static class Counter {public int count 0;void increase() {count;} } public static void main(String[] args) throws InterruptedException {final Counter counter new Counter();Thread t1 new Thread(()…

到手价的监测要求和方法

品牌在做电商价格监测时&#xff0c;为什么要对到手价进行监测&#xff0c;这其中的原因还是很显现的&#xff0c;各平台的促销信息众多&#xff0c;如果只监测页面价的低价行为&#xff0c;那将有非常多的低价链接不会被发现&#xff0c;而这也会导致品牌做渠道管控时失去公平…

电脑内存错误怎么办?

内存是电脑的基本配件之一&#xff0c;一款电脑的内存大小能够在一定程度上决定这款电脑的性能。我们在使用电脑的过程中总会出现一些关于内存大大小小的问题&#xff0c;其中电脑提示内存错误的原因是什么?电脑内存错误怎么解决呢? 内存错误的原因 电脑的很多故障往往都会反…

Java锁

1. 乐观锁 乐观锁是一种乐观思想&#xff0c;即认为读多写少&#xff0c;遇到并发写的可能性低&#xff0c;每次去拿数据的时候都认为 别人不会修改&#xff0c;所以不会上锁。 但是在更新的时候会判断一下在此期间别人有没有去更新这个数据&#xff0c;采取在写时先读出当前…

四、程序员如何高质量重构代码?

有道无术&#xff0c;术尚可求也&#xff0c;有术无道止于术。你好&#xff0c;我是程序员雪球&#xff0c;今天和你聊聊程序员重构代码那些事。 程序员重构代码的重要性不言而喻&#xff0c;但如何进行有效的重构呢&#xff1f;下面是一些建议和指导。 为什么要重构&#xff…

leaflet +高德地图纠偏

一、html源码 <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title></title><meta charset"utf-8" /><linkrel"stylesheet"href&…

利用远程调试获取Chromium内核浏览器Cookie

前言 本文将介绍不依靠DPAPI的方式获取Chromium内核浏览器Cookie 远程调试 首先我们以edge为例。edge浏览器是基于Chromium的&#xff0c;而Chromium是可以开启远程调试的&#xff0c;开启远程调试的官方文档如下&#xff1a; https://blog.chromium.org/2011/05/remote-deb…

中介者(Mediator)模式

目录 动机使用场景参与者协作效果实现相关模式应用和思考 中介者(Mediator)是对象行为模式&#xff0c;用一个中介对象来封装一系列对象的交互。中介者使各对象不需要显式的相互应用&#xff0c;从而使其耦合松散&#xff0c;而且可以独立的改变他们之间的交互 动机 面向对象设…

【Arduino小车实践】PID应用之四驱小车

一、 PID公式 二、 PID应用的必要性 1. 四驱小车运动 左边两个驱动轮和右边两个驱动轮的速度相同直线右边轮子的速度大于左边轮子的速度左偏右边轮子的速度小于左边轮子的速度 右偏 2. 产生多种运动的原因 小车的4个电机&#xff0c;减速箱以及车轮在物理层面上存在误差&am…

STM32 Proteus仿真LCD12864火灾检测烟雾火焰温度报警器MQ2 -0064

STM32 Proteus仿真LCD12864火灾检测烟雾火焰温度报警器MQ2 -0064 Proteus仿真小实验&#xff1a; STM32 Proteus仿真LCD12864火灾检测烟雾火焰温度报警器MQ2 -0064 功能&#xff1a; 硬件组成&#xff1a;STM32F103R6单片机 LCD12864 液晶显示DS18B20 温度传感器多个按键电位…