[C++入门]基础与语法

1. 数据类型

C++作为一种强类型语言,支持多种数据类型,这些数据类型用于声明变量、函数参数、返回值等。数据类型可以分为两大类:基本数据类型和复合数据类型。

基本数据类型
  • 整型(Integer Types):包括int(基本整型)、short(短整型)、long(长整型)、long long(超长整型)、char(字符型,虽常作为整型处理)等。它们用于存储整数值。
  • 浮点型(Floating-Point Types):包括float(单精度浮点型)、double(双精度浮点型)、long double(扩展精度浮点型)等。它们用于存储带小数点的数值。
  • 布尔型(Boolean Type)bool,用于表示真(true)或假(false)的逻辑值。

示例:

#include <iostream>  int main() {  int num = 42; // 整型  float pi = 3.14f; // 浮点型,注意f后缀表示float类型  bool isTrue = true; // 布尔型  std::cout << "Number: " << num << ", PI: " << pi << ", Truth: " << (isTrue ? "True" : "False") << std::endl;  return 0;  
}

复合数据类型
  • 数组(Array):用于存储一系列同类型数据的集合。可以通过索引访问数组中的元素。
  • 结构体(Struct):用户自定义的复合数据类型,可以包含不同种类的数据(如整型、浮点型等)作为成员。
  • 类(Class):C++中的核心特性之一,是结构体的扩展,支持面向对象编程的三大特性:封装、继承和多态。
  • 指针(Pointer):存储变量地址的变量类型,通过指针可以间接访问和操作内存中的数据。
  • 引用(Reference):是变量的别名,通过引用可以直接访问和操作原变量的值,但必须在声明时初始化。

  示例(以数组为例):

#include <iostream>  int main() {  int numbers[] = {1, 2, 3, 4, 5}; // 整型数组  for(int i = 0; i < 5; ++i) {  std::cout << numbers[i] << " ";  }  std::cout << std::endl;  return 0;  
}
2. 运算符与表达式

C++提供了丰富的运算符,用于执行各种算术、关系、逻辑等操作。

  • 算术运算符+-*/%(取模)等,用于执行基本的数学运算。
  • 关系运算符==!=<<=>>=等,用于比较两个表达式的值。
  • 逻辑运算符&&(逻辑与)、||(逻辑或)、!(逻辑非)等,用于组合或修改条件语句的真值。
  • 赋值运算符=(简单赋值)、+=-=*=/=等,用于给变量赋值或修改其值。
  • 位运算符&|^~<<>>等,用于对整数的二进制位进行操作。

注:表达式的求值和优先级遵循数学和编程的通用规则,通常需要使用括号()来改变默认的优先级顺序。

示例:

#include <iostream>  int main() {  int a = 10, b = 20;  int sum = a + b; // 加法运算符  int product = a * b; // 乘法运算符  if(a < b) { // 关系运算符  std::cout << a << " is less than " << b << std::endl;  }  if(sum > 20 && product == 200) { // 逻辑运算符  std::cout << "Both conditions are true" << std::endl;  }  return 0;  
}
3. 控制结构
  • 条件语句
    • if-else:根据条件表达式的真假执行不同的代码块。
    • switch:根据表达式的值与多个case标签的匹配情况执行相应的代码块。
  • 循环语句
    • for:通过初始化、条件判断和迭代更新三个部分控制循环的执行。
    • while:当条件为真时,重复执行循环体。
    • do-while:至少执行一次循环体,然后检查条件,若为真则继续执行。

示例(条件语句): 

#include <iostream>  int main() {  int score = 85;  if(score >= 90) {  std::cout << "Grade: A" << std::endl;  } else if(score >= 80) {  std::cout << "Grade: B" << std::endl;  } else {  std::cout << "Grade: Below B" << std::endl;  }  return 0;  
}

示例(循环语句): 

#include <iostream>  int main() {  for(int i = 0; i < 5; ++i) {  std::cout << "Number " << i << std::endl;  }  return 0;  
}

 

4. 函数

函数是C++中组织代码的基本单位,用于实现特定的功能。

  • 函数的定义:包括返回类型、函数名、参数列表(可选)和函数体。函数体包含实现特定功能的代码。
  • 函数的调用:通过函数名和参数(如果有)来调用函数,执行函数体内的代码。
  • 参数传递
    • 值传递:调用函数时,实参的值被复制到形参中,函数内对形参的修改不会影响到实参。
    • 引用传递:通过引用(使用&操作符)传递参数,函数内对形参的修改会影响到实参。
    • 指针传递:通过指针传递参数,允许函数直接访问和修改实参指向的内存地址中的数据。
  • 递归函数:一个函数调用自身的函数。递归函数必须有一个明确的退出条件,以防止无限递归导致程序崩溃。

示例(函数的定义与调用):

#include <iostream>  // 函数定义  
int add(int a, int b) {  return a + b;  
}  int main() {  // 函数调用  int result = add(5, 3);  std::cout << "The sum is: " << result << std::endl;  return 0;  
}

示例(值传递,引用传递):

#include <iostream>  // 值传递  
void incrementByValue(int x) {  x = x + 1; // 仅修改局部副本  
}  // 引用传递  
void incrementByReference(int& x) {  x = x + 1; // 修改实际参数  
}  int main() {  int num = 5;  incrementByValue(num); // num 不变  std::cout << "After value increment: " << num << std::endl; // 输出 5  incrementByReference(num); // num 增加  std::cout << "After reference increment: " << num << std::endl; // 输出 6  return 0;  
}

 

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

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

相关文章

oracle(表空间分类、表空间操作、默认表空间)

文章目录 oracle数据库默认表空间列表表空间是什么&#xff1f;表空间的分类1.永久性表空间&#xff1a;2.临时性表空间&#xff1a;3.撤销表空间&#xff1a; 表空间的作用Oracle 系统自动建立的表空间默认表空间1&#xff0e;SYSTEM 表空间2&#xff0e;SYSAUX表空间3&#x…

01:简易的电动车防盗报警器

简易的电动车防盗报警器 1、震动传感器模块的使用2、使用震动传感器模块控制继电器开关3、433M无线发射接收模块的使用 需要材料&#xff1a; 1、51单片机 2、震动传感器模块 3、继电器模块 4、高功率喇叭 5、433M无线发射接收模块 6、弱干杜邦线 1、震动传感器模块的使用 接好…

u盘电脑格式化恢复,这里有3种简单有效的方法和视频教程!

我们今天将探讨如何在电脑格式化后恢复U盘数据。数据丢失是一个常见问题&#xff0c;尤其是当我们需要快速清理U盘或不慎执行了格式化操作时。在本文将分享几种简单而有效的方法&#xff0c;帮助您从格式化后的U盘中恢复数据。此外&#xff0c;我们还提供了相关的视频教程&…

大话光学原理:3.干涉与衍射

一、干涉 这是一束孤独的光&#xff0c;在真空的无垠中悄无声息地穿行。忽然&#xff0c;一堵高耸的墙壁挡住了它的去路&#xff0c;它别无选择&#xff0c;只能硬着头皮冲撞而去。在摸索中&#xff0c;它意外地发现墙壁上竟有两道孔隙&#xff0c;笔直而细长&#xff0c;宛如量…

嵌入式代码升级——IAP

目录 IAP的特点 实现 IAP 功能 STM32 正常的程序运行流程 STM32 加入IAP后的运行流程 程序执行流程 BootLoader程序 APP1程序 APP2程序 验证操作步骤 IAP&#xff08;In-Application Programming&#xff09;指的是在应用程序运行时对其自身的Flash存储器进行编程的操作…

kotlin distinctBy 使用

distinctBy 是 Kotlin 中的一个函数&#xff0c;它允许你根据特定的键或属性对列表进行去重。它会保留第一次出现的元素&#xff0c;后续重复的元素将被过滤掉。 以下是使用 distinctBy 的一些例子&#xff1a; 示例 1: 根据对象的属性去重 假设你有一个包含对象的列表&…

【2024——CUMCM】Matlab快速入门

目录 常识 disp and input 字符串合并 sum 提取矩阵指定位置的元素 指定行列 指定行or指定列&#xff08;返回行/列向量&#xff09; 指定某些行 指定全部元素&#xff0c;按列拼接 size repmat 矩阵的运算 基本运算 形状相同的矩阵运算 每个元素同时和常数相乘或相…

异步主从复制

主从复制的概念 主从复制是一种在数据库系统中常用的数据备份和读取扩展技术&#xff0c;通过将一个数据库服务器&#xff08;主服务器&#xff09;上的数据变更自动同步到一个或多个数据库服务器&#xff08;从服务器&#xff09;上&#xff0c;以此来实现数据的冗余备份、读…

【2】A-Frame核心设计

一、基于HTML和Primitives的表达 1.HTML - 超文本标记语言 A-Frame 基于 HTML 和 DOM 之上&#xff0c;使用自定义元素的 polyfill。 HTML 是 Web 的构建块&#xff0c;提供了最易于访问的计算语言之一。无需安装或构建步骤&#xff0c;使用 HTML 创建仅涉及 HTML 文件中的文…

【STM32/HAL】嵌入式课程设计:简单的温室环境监测系统|DS18B20 、DHT11

前言 板子上的外设有限&#xff0c;加上想法也很局限&#xff0c;就用几个传感器实现了非常简单的监测&#xff0c;显示和效应也没用太复杂的效果。虽说很简单&#xff0c;但传感器驱动还是琢磨了不久&#xff0c;加上串口线坏了&#xff0c;调试了半天才发现不是代码错了而是…

ORA-12537: TNS:连接关闭/Io 异常: Got minus one from a read call

在另外一个数据库建立dblink的时候&#xff0c;发现执行命令报错&#xff1a; 被连接的数据库我也上去过&#xff0c;用工具尝试登陆也报错&#xff1a; IO Error: Got minus one from a read call, connect lapse 1 ms., Authentication lapse 0 ms. Got minus one from a …

设计模式探索:装饰器模式

1. 装饰器模式定义 装饰器模式&#xff08;Decorator Pattern&#xff09; 装饰器模式是一种结构型设计模式&#xff0c;允许向一个对象动态添加行为。在不改变类的接口的情况下&#xff0c;装饰器模式在原始类上增加额外的职责&#xff0c;并且支持多个装饰器嵌套使用。 装…

一个php文件怎么实现联系表单自动发送邮件

学习PHP&#xff1a;如何编写一个自动发送邮件的联系表单处理器&#xff1f; 无论是反馈意见、业务咨询&#xff0c;还是技术支持&#xff0c;联系表单都能为用户提供便捷的交流途径。AokSend将探讨如何通过一个PHP文件实现联系表单的自动发送邮件功能。 php文件&#xff1a;…

运用F5构建机器人防御,轻松应对恶意Bot威胁

数字化加快了信息的传播与交流&#xff0c;网络罪犯也借机纷纷涌向线上业务。攻击者通过暴力破解、字典攻击和撞库攻击破坏身份验证&#xff0c;导致账户被接管、欺诈、经济损失和客户不满&#xff0c;对应用的影响可能是灾难性的。面对日新月异的攻击&#xff0c;F5分布式云机…

作业/数据结构/2024/7/8

链表的相关操作作业&#xff1a; 1】 按值修改 2】按值查找&#xff0c;返回当前节点的地址 &#xff08;先不考虑重复&#xff0c;如果有重复&#xff0c;返回第一个&#xff09; 3】 逆置(反转) 4】释放链表 main.c #include "head.h"int main(int argc, con…

Python程序打包成exe文件的终极指南

Python程序打包成exe文件的终极指南 摘要&#xff1a; 本文将通过具体步骤和示例代码&#xff0c;介绍如何使用Pyinstaller将Python程序打包成Windows平台上的独立可执行文件&#xff08;.exe&#xff09;。我们将涵盖从环境准备到打包步骤的详细过程&#xff0c;并提供实战演…

【IMU】 温度零偏标定

温度标定 IMU的零偏随着温度的变化而变化&#xff0c;在全温范围内形状各异&#xff0c;有些可能是单调的&#xff0c;有些可能出现拐点。 多项式误差温度标定 目的是对估计的参数进行温度补偿&#xff0c;获取不同温度时的参数值&#xff08;零偏、尺度、正交&#xff09;&…

向github远程仓库中push,要求使用token登录

Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. 如上&#xff0c;当向github远程仓库push时&#xff0c;输入github的用户名和密码出现如上错误&#xff0c;要求使用token登录&#xff0c;此时只需要用户…

sm2兼容ie解决方法

1.babel-loader中include ‘node_modules/sm-crypto’ 这个包 2.如果babel版本在6以上 会报错 Couldn‘t find preset “es2015“ es2015 是一个已被废弃的 Babel 预设&#xff0c;它已经被 babel/preset-env 取代 安装依赖 npm install babel/preset-env --save-dev修改no…

贪心+动态规划

P5019 [NOIP2018 提高组] 铺设道路 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路&#xff1a; 原理上就是一个差分数组&#xff0c;例如 4 3 2 5 3 5 这个数据 我们在其前面加上一个0作为x值&#xff0c;也就是&#xff08;0 4 3 2 5 3 5&#xff09;&#xff0c;从…