C++重新入门-C++基本语法

目录

1.C++程序结构

2.C++ 中的分号 & 语句块

3.C++ 标识符

4.C++ 关键字

5.C++ 中的空格


1.C++程序结构

C++程序结构通常包括以下几个主要部分:

注释(Comments): 注释是用来解释代码的文字,对于程序员而言是非常重要的。在C++中,注释可以使用两种方式:单行注释(//)和多行注释(/* */)。

// 这是单行注释/*这是多行注释
*/

预处理器指令(Preprocessor Directives): 预处理器指令是在编译之前由预处理器处理的命令。例如,#include 指令用于包含头文件,#define 用于定义宏等。

#include <iostream>
#define PI 3.14159

命名空间(Namespace): 命名空间用于将代码分组在一个逻辑单元内,防止命名冲突。C++中常见的命名空间是 std,包含了很多标准库的函数和对象。

using namespace std;

主函数(Main Function): 每个C++程序都需要有一个主函数,即 main 函数。程序从 main 函数开始执行。

int main() {// 主函数的代码return 0;
}

变量和数据类型(Variables and Data Types): 在C++中,你需要声明变量并指定其数据类型。常见的数据类型包括整数 (int)、浮点数 (floatdouble)、字符 (char) 等。

int age = 25;
float salary = 50000.50;
char grade = 'A';

运算符(Operators): C++支持各种运算符,包括算术运算符、比较运算符、逻辑运算符等。

int sum = 5 + 3;
bool isEqual = (5 == 3);

控制流语句(Control Flow Statements): 控制流语句用于控制程序的执行流程,包括条件语句(ifelse)、循环语句(forwhile)等。

if (age >= 18) {cout << "You are an adult." << endl;
} else {cout << "You are a minor." << endl;
}

函数(Functions): C++中的函数用于组织和重用代码。函数包含函数名、参数列表、返回类型和函数体。

int add(int a, int b) {return a + b;
}

类和对象(Classes and Objects): C++是一种面向对象的编程语言,支持类和对象的概念。类定义了数据和方法的集合,对象是类的实例。

class Circle {
public:double radius;double getArea() {return PI * radius * radius;}
};

2.C++ 中的分号 & 语句块

在C++中,分号(;)和语句块(也称为代码块)是两个基本的语法元素,用于组织和结构化程序代码。

分号(;): 分号是C++中语句结束的标志。每条语句必须以分号结束。例如,变量声明、赋值语句、函数调用等都需要以分号结束。

int age = 25;   // 声明并初始化变量,语句结束
cout << "Hello, World!" << endl;  // 输出语句,语句结束

语句块(代码块): 语句块是由一对花括号 {} 包围起来的一组语句。它们被视为一个单独的执行单元。语句块通常用于控制流结构(如条件语句和循环语句),以及函数、类的定义。

int main() {// 这是一个语句块int x = 5;if (x > 0) {cout << "Positive number" << endl;} else {cout << "Non-positive number" << endl;}return 0;
}

在上面的例子中,main 函数的主体是一个语句块。在 if 语句中也有两个语句块,分别用于处理条件为真和条件为假的情况。

语句块的使用有助于将多个语句组织成一个逻辑单元,从而增加代码的可读性,也便于维护和调试。每个语句块内的变量通常被认为是在同一个作用域中,而作用域外的变量对其不可见。

3.C++ 标识符

在C++中,标识符是用来命名变量、函数、类、对象等各种实体的名称。标识符必须遵循一些特定的规则和约定,以确保程序的正确性和可读性。以下是C++中标识符的一些规则:

  1. 组成字符:

    • 标识符由字母、数字和下划线(_)组成。
    • 标识符必须以字母或下划线开头。
  2. 大小写敏感:

    • C++是大小写敏感的,因此大写字母和小写字母被视为不同的字符。
  3. 长度:

    • 标识符的长度没有限制,但通常应该选择具有描述性的名称,以提高代码的可读性。
  4. 保留字(关键字):

    • 不允许使用C++中的关键字(如 ifelseint等)作为标识符。这些关键字有特殊的用途,用于构建语法结构。
  5. 命名约定:

    • 建议使用具有描述性的名称,以便其他人能够轻松理解标识符的用途。
    • 使用驼峰命名法(camelCase)或下划线命名法(snake_case)是常见的命名约定。
  6. 数字开头:

    • 不建议标识符以数字开头,以避免与常量、字面值等混淆。

一些例子:

int variableName;   // 使用驼峰命名法
double average_score;
const int MAX_LIMIT = 100;  // 使用下划线命名法,常量通常使用全大写

需要注意的是,虽然C++标识符允许使用Unicode字符,但通常建议使用ASCII字符以确保跨平台的兼容性。遵循良好的标识符命名约定和规则有助于编写清晰、易读和易维护的代码。

4.C++ 关键字

C++关键字是具有特殊用途的保留字,它们在编程语言中有特定的含义,用于构建语法结构和执行特定的操作。以下是C++中的一些关键字:

  1. 基本数据类型关键字:

    • int: 整数类型
    • double: 双精度浮点数类型
    • float: 单精度浮点数类型
    • char: 字符类型
    • bool: 布尔类型
  2. 控制流关键字:

    • if: 条件语句
    • else: 条件语句的分支
    • switch: 用于多分支选择的语句
    • case: switch语句中的分支
    • default: switch语句中的默认分支
    • for: 循环语句
    • while: 循环语句
    • do: 循环语句
  3. 函数关键字:

    • void: 表示函数没有返回值
    • return: 返回语句
  4. 类和对象关键字:

    • class: 定义类
    • struct: 定义结构体
    • new: 动态分配内存
    • delete: 释放动态分配的内存
    • this: 指向当前对象的指针
  5. 命名空间关键字:

    • namespace: 定义命名空间
    • using: 引入命名空间的标识符
  6. 常量关键字:

    • const: 声明常量
    • constexpr: 声明常量表达式
  7. 存储类关键字:

    • static: 静态存储类
    • extern: 外部链接存储类
    • register: 寄存器存储类
    • mutable: 修饰类的非常量成员,允许在const成员函数中修改它们
  8. 面向对象编程关键字:

    • public: 类成员的访问修饰符,表示公共访问权限
    • private: 类成员的访问修饰符,表示私有访问权限
    • protected: 类成员的访问修饰符,表示受保护的访问权限
    • virtual: 用于声明虚函数
    • override: 用于标识重写(覆盖)基类的虚函数
    • final: 用于标识类、虚函数或派生类,表示不可继承或不可重写

这只是C++中一些常用关键字的简要概述,实际上C++有更多的关键字,每个关键字都有其特定的语法和语义。了解这些关键字对于编写有效的C++程序是至关重要的。

5.C++ 中的空格

只包含空格的行,被称为空白行,可能带有注释,C++ 编译器会完全忽略它。

在 C++ 中,空格用于描述空白符、制表符、换行符和注释。空格分隔语句的各个部分,让编译器能识别语句中的某个元素(比如 int)在哪里结束,下一个元素在哪里开始。因此,在下面的语句中:

int age;

在这里,int 和 age 之间必须至少有一个空格字符(通常是一个空白符),这样编译器才能够区分它们。另一方面,在下面的语句中:

fruit = apples + oranges;   // 获取水果的总数

fruit 和 =,或者 = 和 apples 之间的空格字符不是必需的,但是为了增强可读性,您可以根据需要适当增加一些空格。

 

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

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

相关文章

记录关于node接收上传文件formData踩的坑

1.vue2使用插件formidable实现接收文件&#xff0c;首先接口不可以使用任何中间件&#xff0c;否则form.parse()方法不执行。 const express require(express) const multipart require(connect-multiparty); const testController require(../controller/testController)/…

WordPress SMTP发信避坑指南

前言 Clip_2024-01-31_19-46-18803285 10.5 KB 目前不少主题已经内置了SMTP发信功能&#xff0c;这是因为WordPress自带的mail()函数发信时基本无法发送。 但是在之前&#xff08;约2021年末&#xff09;貌似可以通过WordPress自带的函数发信&#xff0c;并且收信方提示由xxx代…

可以将linux docker容器中的文件拿出来吗?

当然可以。在Linux环境下&#xff0c;可以从Docker容器中将文件拿出来&#xff08;即复制到宿主机上&#xff09;&#xff0c;或者将宿主机的文件复制到Docker容器中。以下是两种常用方法&#xff1a; 方法1&#xff1a;使用 docker cp 命令 直接从命令行拷贝文件或目录&…

MySQL数据库安全加固方案

数据库版本:MySQL8.0.22 按照本安全加固方案进行的数据库加固,一般安全扫描工具扫描出来几乎无漏洞。 1.2 帐号安全 1.2.1 避免不同用户间共享帐号 参考以下步骤。 A. 创建用户。 mysql>CREATE USER ‘用户名’@‘用户 host’ IDENTIFIED BY ‘密码’; 执行以上命令可以…

Request Response 基础篇

Request & Response 在之前的博客中&#xff0c;初最初见到Request和Response对象&#xff0c;是在Servlet的Service方法的参数中&#xff0c;之前隐性地介绍过Request的作用是获取请求数据。通过获取的数据来进行进一步的逻辑处理&#xff0c;然后通过对Response来进行数…

C# Onnx yolov8 水表读数检测

目录 效果 模型信息 项目 代码 训练数据 下载 C# Onnx yolov8 水表读数检测 效果 模型信息 Model Properties ------------------------- date&#xff1a;2024-01-31T10:18:10.141465 author&#xff1a;Ultralytics task&#xff1a;detect license&#xff1a;AGPL-…

c语言---访问越界之后死循环的原因

目录 死循环的概念环境题目代码运行结果对代码发生情况进行解释对i的地址和arr[12]地址一样的解释注意总结 死循环的概念 简单来说&#xff0c;死循环就是指无法靠自身的控制终止循环&#xff0c;在编程中&#xff0c;则是靠自身控制无法终止的程序。即在某一时刻&#xff0c;…

uniapp基于Android平台的校园生活服务交流论坛系统(二手,失物招领 -跑腿) 小程序hbuiderx

作为一款APP的校园论坛系统&#xff0c;面向的是大多数学者&#xff0c;软件的界面设计简洁清晰&#xff0c;用户可轻松掌握使用技巧。在调查之后&#xff0c;获得用户以下需求&#xff1a; &#xff08;1&#xff09;用户注册登录后&#xff0c;可进入系统解锁更多功能&#x…

Python中的Statsmodels库实际案例解析1:市场营销效果分析

在现代商业环境中,了解和评估市场营销活动的效果对于企业来说至关重要。它不仅帮助企业优化广告支出,还能够提高市场策略的整体效率。本文将通过一个实际案例,展示如何使用Python中的Statsmodels库来进行市场营销效果的分析。 写在开头 市场营销效果分析对于评估和优化广告…

【从零开始的rust web开发之路 四】rust语言tokio异步使用redis教程

文章目录 前言一、首先引入依赖二、创建redis客户端三、相关操作设置值mset设置多个key值设置含有过期时间的值如果key不存在才设置获取基本类型值删除一个键删除多个键判断键是否存在 如何使用json序列化导入相关依赖代码相关实例 总结 前言 使用rust写web&#xff0c;自然是…

Windows网络常用的11个命令,ping、tracert、arp、ipconfig、netstat、telnet等

1&#xff0e;ping命令 ping是个使用频率极高的实用程序&#xff0c;主要用于确定网络的连通性。ping能够以毫秒为单位显示延迟。如果应答时间短&#xff0c;表示数据报不必通过太多的路由器或网络&#xff0c;连接速度比较快。ping还能显示TTL&#xff08;Time To Live&#…

AspNet web api 和mvc 过滤器差异

最近在维护老项目。定义个拦截器记录接口日志。但是发现不生效 最后发现因为继承的 ApiController不是Controller 只能用 System.Web.Http下的拦截器生效。所以现在总结归纳一下 Web Api: System.Web.Http.Filters.ActionFilterAttribute 继承该类 Mvc: System.Web.Mvc.Ac…

客户端和服务端的简介

Client 和 Server 客户端&#xff08;Client&#xff09; 或称用户端&#xff0c;是指与服务器相对应&#xff0c;为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外&#xff0c;一般安装在客户机上&#xff0c;需要与服务端互相配合运行。例如&#xff1a;下载 Q…

ChatGPT炸裂了

优质内容&#xff1a;ChatGPT太炸裂了 hello&#xff0c;我是小索奇 很多人在使用ChatGPT时遇到了两个主要问题&#xff0c;导致他们觉得这个工具并没有带来太多实际价值。首先&#xff0c;许多人发现ChatGPT的回答缺乏深度&#xff0c;缺乏实用性。其次&#xff0c;一些人在使…

MySQL操作问题汇总

MySQL操作问题汇总 无法远程连接Ubuntu的MySQL 无法远程连接Ubuntu的MySQL 提示&#xff1a;MySQL默认只允许本地连接&#xff1a;localhost 解决&#xff1a; #1.修改配置文件 #/etc/mysql/mysql.conf.d/mysqld.cnf > cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/…

WebSocketServer依赖注入问题

WebSocketServer加入spring的bean管理 问题 @Component @ServerEndpoint("/webSocket/{topic}") @Slf4j public class WebSocketServer {@Autowiredprivate WsHandle wsHandle;} 前面使用@ServerEndpoint注册一个websocket服务端,然后发现wsHandle依赖注入失败,…

STM32GPIO输入(按键控制LED、光敏电阻控制蜂鸣器实例)

文章目录 一、介绍传感器模块介绍硬件电路c语言数据类型 二、实例按键控制LED接线图代码实现 光敏电阻控制蜂鸣器组装线路代码实现 相关函数解释 一、介绍 传感器模块介绍 硬件电路 上两种按下时为0&#xff0c;下两种按下时为1。 c语言数据类型 现在常用stdint头文件所定…

BeanDefinitionRegistry学习

Spring版本5.1.x 简介 在Spring框架中&#xff0c;BeanDefinitionRegistry是一个接口&#xff0c;它主要用于向注册表中注册BeanDefinition实例&#xff0c;完成注册的过程。该接口的主要方法是registerBeanDefinition&#xff0c;用于将一个BeanDefinition实例注册到注册表中…

【zip密码】zip压缩包的打开密码忘了,怎么办?

Zip压缩包设置了密码&#xff0c;解压的时候就需要输入正确对密码才能顺利解压出文件&#xff0c;正常当我们解压文件或者删除密码的时候&#xff0c;虽然方法多&#xff0c;但是都需要输入正确的密码才能完成。忘记密码就无法进行操作。 那么&#xff0c;忘记了zip压缩包的密…

一张证书如何改变职业生涯?程序员必看!

随着信息产业的迅猛发展&#xff0c;对行业人才的需求也在逐年扩大。据统计&#xff0c;未来五年&#xff0c;我国对信息化人才的总需求量将高达1500万至2000万人。以软件开发为例&#xff0c;我国对软件人才的需求正以每年20%的速度递增&#xff0c;每年新增的需求接近百万。计…