[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.rhkb.cn/news/372982.html

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

相关文章

超详细!Jmeter 压测-设计5W并发量场景

需求&#xff1a;设计一个5W并发量的性能场景&#xff1f; 1、确定性能测试工具&#xff0c;性能测试思路 测试工具&#xff1a;Jmeter 并发设计思路&#xff1a;如果被测服务足够快&#xff0c;比如10ms的响应时间&#xff0c;1个线程/秒就是100tps&#xff0c;5万的TPS&…

MySQL之基本查询(上)-表的增删查改

目录 Create(创建) 案例建表 插入 单行数据 指定列插入 单行数据 全列插入 多行数据 全列插入 插入是否更新 插入时更新 替换 Retrieve(读取) 建表插入 select列 全列查询 指定列查询 查询字段为表达式 为查询结果指定别名 结果去重 where条件 比较运算符 逻辑运…

嵌入式代码升级——IAP

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

招投标信息采集系统:让您的企业始终站在行业前沿

一、为何招投标信息如此关键&#xff1f; 在经济全球化的大背景下&#xff0c;招投标活动日益频繁&#xff0c;成为企业获取项目、拓展市场的主流方式之一。招投标信息采集&#xff0c;作为企业战略决策的前置环节&#xff0c;其重要性不言而喻。它不仅关乎企业能否第一时间发…

如何网页在线编辑微软Office Word,并导出为PDF格式。

随着互联网技术的不断发展&#xff0c;越来越多的企业开始采用在线办公模式&#xff0c;微软Office Word 是最好用的文档编辑工具&#xff0c;然而doc、docx、xls、xlsx、ppt、pptx等格式的Office文档是无法直接在浏览器中直接打开的&#xff0c;如果可以实现Web在线预览编辑Of…

git只列出本地分支

git只列出本地分支 git branch --list git强制删除本地分支 git branch -D_error: the branch dlx-test is not fully merged. -CSDN博客文章浏览阅读648次。git branch -d 可以通过: git branch 查看所有本地分支及其名字&#xff0c;然后删除特定分支。git删除远程remote分支…

互联网医院系统,开发互联网医院设计哪些功能?

随着科技的进步和数字化转型的推动&#xff0c;互联网医院系统已成为现代医疗服务的重要组成部分。这一系统通过整合信息技术与医疗资源&#xff0c;为用户提供便捷、高效的医疗服务。以下是互联网医院系统的主要功能介绍。 1、在线咨询与诊断 互联网医院系统允许患者通过网络平…

IEC62056标准体系简介-2.IEC62056标准体系及对象标识系统(OBIS)

1. IEC 62056标准体系 IEC 62056标准体系目前共包括六部分&#xff0c;见图1&#xff1a; 第61部分&#xff1a;对象标识系统第62部分&#xff1a;接口类第53部分&#xff1a;COSEM应用层第46部分&#xff1a;使用HDLC&#xff08;High Level Data Link Control&#xff09;协…

54、一维和二维自组织映射(matlab)

1、一维和二维自组织映射原理 一维和二维自组织映射&#xff08;Self-Organizing Maps, SOM&#xff09;是一种无监督的机器学习算法&#xff0c;通过学习输入数据的拓扑结构&#xff0c;将高维输入数据映射到低维的网格结构中&#xff0c;使得相似的输入数据点在映射空间中也…

阿尔泰科技与西安交通大学陕西省某技术重点实验室共谋未来!

近日&#xff0c;阿尔泰科技的电子工程师&#xff08;熊工&#xff09;应邀前往西安交通大学陕西省某技术重点实验室&#xff0c;参与课题组项目的测试与调试工作。此次合作不仅成功推动了项目的进展&#xff0c;还为未来的深入合作奠定了坚实基础。 阿尔泰科技作为领先的测控技…

刷题之删除有序数组中的重复项(leetcode)

删除有序数组中的重复项 这题简单题&#xff0c;双指针&#xff0c;一个指针记录未重复的数的个数&#xff0c;另一个记录遍历的位置。 以下是简单模拟&#xff0c;可以优化&#xff1a; class Solution { public:int removeDuplicates(vector<int>& nums) {int l0…

Debezium报错处理系列之第114篇:No TableMapEventData has been found for table id:256.

Debezium报错处理系列之第114篇:Caused by: com.github.shyiko.mysql.binlog.event.deserialization.MissingTableMapEventException: No TableMapEventData has been found for table id:256. Usually that means that you have started reading binary log within the logic…

博美犬插画:成都亚恒丰创教育科技有限公司

​博美犬插画&#xff1a;萌动心灵的细腻笔触 在浩瀚的艺术海洋中&#xff0c;有一种艺术形式总能以它独有的温柔与细腻&#xff0c;触动人心最柔软的部分——那便是插画。而当插画遇上博美犬这一萌宠界的明星&#xff0c;便诞生了一幅幅令人爱不释手的作品&#xff0c;成都亚…

代码随想录打卡第十八天

代码随想录–二叉树部分 day 17 休息日 day 18 二叉树第五天 文章目录 代码随想录--二叉树部分一、力扣654--最大二叉树二、力扣617--合并二叉树三、力扣700--二乘树中的搜素四、力扣98--验证二叉搜索树 一、力扣654–最大二叉树 代码随想录题目链接&#xff1a;代码随想录 给…

美容师有什么话术技巧?美业人如何提升自己的销售技巧?博弈美业门店管理系统分享经验

作为一名美容师&#xff0c;有一些话术和销售技巧可以帮助你提升服务质量和销售业绩。以下是博弈美业收银系统分享的一些建议&#xff1a; 1.建立信任&#xff1a; 在与客户交流时&#xff0c;表现出真诚、友好和专业的态度。倾听客户的需求&#xff0c;并给予针对性的建议&a…

随笔(一)

1.即时通信软件原理&#xff08;发展&#xff09; 即时通信软件实现原理_即时通讯原理-CSDN博客 笔记&#xff1a; 2.泛洪算法&#xff1a; 算法介绍 | 泛洪算法&#xff08;Flood fill Algorithm&#xff09;-CSDN博客 漫水填充算法实现最常见有四邻域像素填充法&#xf…

Redis代替Session实现共享

集群的session共享问题 session共享问题&#xff1a;多台tomcat并不共享session存储空间&#xff0c;当请求切换到不同的tomcat服务时导致数据丢失的问题。 session的替代方案&#xff1a; 数据共享内存存储key、value结构 将redis替换session可以解决session共享问题

Day65 代码随想录打卡|回溯算法篇---组合总和II

题目&#xff08;leecode T40&#xff09;&#xff1a; 给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意&#xff1a;解集不能包含…

第十八节 LLaVA如何按需构建LORA训练(视觉、语言、映射多个组合训练)

文章目录 前言一、基于llava源码构建新的参数1、添加lora_vit参数2、训练命令脚本设置二、修改源码,构建lora训练1、修改源码-lora训练2、LLM模型lora加载3、VIT模型加载4、权重冻结操作5、结果显示三、实验结果前言 如果看了我前面文章,想必你基本对整个代码有了更深认识。…

DevOps实战:使用GitLab+Jenkins+Kubernetes(k8s)建立CI_CD解决方案

一.系统环境 本文主要基于Kubernetes1.21.9和Linux操作系统CentOS7.4。 服务器版本docker软件版本Kubernetes(k8s)集群版本CPU架构CentOS Linux release 7.4.1708 (Core)Docker version 20.10.12v1.21.9x86_64CI/CD解决方案架构图:CI/CD解决方案架构图描述:程序员写好代码之…