C++—C++程序基础

news2024/11/27 11:10:42

文章目录

  • 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.coloradmin.cn/o/748300.html

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

相关文章

小程序主包超1.5MB分包处理流程优化方案

"subPackages": [// 分包1 {"root": "src, // 根目录"pages": [{"path": "views/business/index", // 页面路径"name": "business_index","aliasPath": "/business/index",&…

2023年9月广州/重庆/长沙/深圳DAMA-CDGA/CDGP认证考试报名

据DAMA中国官方网站消息&#xff0c;2023年度第三期DAMA中国CDGA和CDGP认证考试定于2023年9月23日举行。 报名通道现已开启&#xff0c;相关事宜通知如下&#xff1a; 考试科目: 数据治理工程师(CertifiedDataGovernanceAssociate,CDGA) 数据治理专家(CertifiedDataGovernanc…

浅析神经网络模型算法在手写文字识别中的重要作用

神经网络模型是什么&#xff1f;与OCR有何不同&#xff1f; 神经网络模型是一种机器学习算法&#xff0c;用于对数据进行模式识别和预测&#xff0c;可应用于各种任务包括图像识别、自然语言处理等。而OCR&#xff08;Optical Character Recognition&#xff09;是一种特定的应…

我在阴影之中 - InsCode Stable Diffusion 美图活动一期

写在前面&#xff1a;博主是一只经过实战开发历练后投身培训事业的“小山猪”&#xff0c;昵称取自动画片《狮子王》中的“彭彭”&#xff0c;总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域&#xff0c;如今终有小成…

第24章:事务基础知识

一、数据库事务Transactions 1.为什么要使用事务 事务可以让数据库保持一致性&#xff0c;通过事务的机制恢复到某个时间点&#xff0c;即使系统崩溃数据库修改的数据不会丢失。 2.存储引擎支持事务的情况 命令: show engines; 只有InnoDB支持事务 3.事务基本概念 事务&a…

【第四章 flutter学习之flutter基础组件】

文章目录 一、目录结构二、创建一个flutter项目三、创建自定义组件四、Container组件 就是divalignment 内容对齐方式decoration 类似border 为BoxDecoration的类 五、Text属性六、image组件六、icon组件总结、 一、目录结构 android、ios各自平台的资源文件 lib 项目目录 linu…

今天给大家分享两款实用的软件

在现代社会中&#xff0c;我们越来越依赖各种各样的软件来提高效率、获得信息和享受娱乐。所以&#xff0c;今天我将与大家分享两款我个人常用且非常实用的软件&#xff0c;一起来看看吧。 人工桌面&#xff1a; 人工桌面是一款备受欢迎的动态桌面壁纸软件&#xff0c;它为我们…

webRTC实现P2P音视频通话(无服务端)

文章目录 先看效果视频对话源码htmlvue2 音频对话源码遇到问题解决方案 先看效果 视频对话源码 html 虽然是vue项目&#xff0c;但是我写在了主页的index页面&#xff0c;仅仅为了测试&#xff0c; <!DOCTYPE html> <html lang"en"> <head><me…

mysql练习---备份/索引/视图

目录 一、备份与还原 二、索引 三、视图 一、备份与还原 CREATE DATABASE booksDB; use booksDB;CREATE TABLE books ( bk_id INT NOT NULL PRIMARY KEY, bk_title VARCHAR(50) NOT NULL, copyright YEAR NOT NULL );INSERT INTO books VALUES (11078, Learning MySQL, 2…

springboot mybatis 双数据库 多数据源

1. 依赖 mybatis相关&#xff1a; <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version> </dependency> <dependency><groupId>com.baomid…

【socket编程】TCP服务器、UDP服务器、本地套接字【C语言代码实现】

目录 0. 准备知识 0.1 大小端概念 0.2 网络字节序和主机字节序的转换 0.3 点分十进制串转换&#xff08;IP地址转换函数&#xff09; 0.4 IPV4结构体&#xff1a;&#xff08;man 7 ip&#xff09; 0.5 IPV6套接字结构体&#xff1a;&#xff08;man 7 ipv6&#xff09; …

IllegalStateException,BeanCreationException报错解决

报错解决 but cannot be delegated to target bean. Switch its visibility to package or protected.

Java反射-反射API、类加载过程

反射 Java反射API是Java语言实现动态性的关键&#xff0c;它允许动态的创建对象、赋值、以及调用对象的方法&#xff0c;同时反射也是实现动态代理的关键&#xff0c;涉及到反射相关的几个类主要有 Class、ClassLoader&#xff0c;Field、Method、Constructor、Proxy等。因为在…

3D 目标检测 SFD 问题记录

问题1&#xff1a;read timeout 顺着网址手动下载&#xff0c;然后放入相应的目录下 问题2&#xff1a;SparseModule import spconv 要改写成 import spconv.pytorch as spconv 问题3&#xff1a;skimage pip install scikit-image -i https://pypi.tuna.tsinghua.edu.cn/si…

MySQL备份、索引、视图

目录 一、备份 案例素材 1、使用mysqldump命令备份数据库中的所有表​编辑 2、备份booksDB数据库中的books表 ​3、使用mysqldump备份booksDB和test数据库 ​4、使用mysqldump备份服务器中的所有数据库 ​5、使用mysql命令还原第二题导出的books表 ​6、进入数据库使用…

cuda 线程索引ID的计算公式(图文)

博客中有一部分公式来自&#xff1a;cuda 线程索引ID的计算公式_blockidx.x_奕星星奕的博客-CSDN博客 我做的工作就是加了图更加形象的表示&#xff0c;还有公式的延申。 线程索引的计算公式 一个Grid可以包含多个Blocks&#xff0c;Blocks的组织方式可以是一维的&#xff0c;…

springboot人脸识别基于java的游戏推荐管理平台的设计及实现_0816qvue

表名&#xff1a;messages 功能&#xff1a;留言板 字段名称 类型 长度 字段说明 主键 默认值 id bigint 主键 主键 addtime timestamp 创建时间 CURRENT_TIMESTAMP userid bigint 留言人id username v…

数据结构--绪论

这里写目录标题 前言数据结构研究内容基本概念与术语数据元素与数据对象的区别数据结构逻辑结构存储结构 数据类型和抽象数据类型数据类型抽象数据类型定义格式举例 小结研究内容基础概念 抽象数据类型的表示和实现 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录…

什么是团体标准?

团体标准是由一个特定的组织、团体或行业共同制定的标准。它是一种在特定领域或行业中被广泛认可和采用的标准化文件&#xff0c;旨在规范产品、服务或流程的要求和规范。团体标准通常由行业协会、标准化组织或特定领域的专业团体开发&#xff0c;并经过广泛讨论、协商和验证&a…

【分享】报告!发现一个低代码数据可视化开发平台~

前言&#xff1a; 哈喽&#xff0c;大家好&#xff0c;我是木易巷~ 最近木易巷发现了一个低代码数据可视化开发平台&#xff0c;快来看看吧~ 1、介绍 GoView 是一个拖拽式低代码数据可视化开发平台&#xff0c;旨在帮助用户快速构建数据大屏&#xff0c;同时减少心智负担。通…