C++ --- 基础知识与细节(上)

目录

1. 常量

2.关键字

3.标识符命名规则

4.数据类型

        4.1 整型

        4.2实型(浮点型)

        4.3 字符型

        4.4 字符串型

        4.5布尔类型 bool (只占一个字节大小)

5.sizeof关键字

6.数据的输入

7. goto语句

8. 一维数组 // 数组名是常量,进行初始化后,不能再对其进行赋值操作

9.二维数组定义方式:

10.函数:

        10.1        函数的定义

        10.2 值传递和引用传递

11. 指针 (指针就是一个地址)

        10.1 指针变量的定义和使用:

             10.2 空指针和野指针

             10.3 const修饰指针。

                10.4指针和数组

                10.5指针和函数

12.结构体

            12.1 结构体基本使用方法

                 12.2 结构体数组

                12.3 结构体指针

                12.4结构体嵌套结构体

                12.5 结构体做函数参数

                12.6 结构体中const使用场景


1. 常量

作用:用于记录程序中不可更改的数据。

c++定义常量两种方式

        1. #define 宏常量: #define 常量名 常量值

                通常在文件上方定义,表示一个常量

        2 const修饰的变量 const 数据类型 常量名 = 常量值

                通常在变量定义前关键字const, 修饰该变量为常量,不可修改。

2.关键字

作用:关键字是c++中预先保留的单词(标识符)

        **在定义变量或常量时候,不要用关键字**

c++关键字如下:

3.标识符命名规则

作用:c++规定给标识符(变量、常量)命名时,有一套自己的规则

*标识符不能是关键字

*标识符只能由字母、数字、下划线组成

*第一个字符必须为字母或下划线

*标识符中区分大小写

4.数据类型

c++规定在创建一个变量或常量时,必须要指定出相应的数据类型,否则无法给变量分配内存

        4.1 整型

short 2字节 -2^15 - 2^15-1

int 4字节 -2^31 - 2^31-1

long 4字节  -2^31 - 2^31-1

long long 8字节 -2^63 - 2^63-1

        4.2实型(浮点型)

默认情况下 输出一个小数,会显示出6位有效数字

float 4字节 7位有效数字

double 8字节 15-16位有效数字

        4.3 字符型

作用:字符型变量用于显示单个字符

语法 char ch = 'a';

注意1:在显示字符型变量时,用单引号字符括起来,不要用双引号

注意2:单引号内只能有一个字符,不可以是字符串

c和c++字符型变量只占用1个字节。

字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元

        4.4 字符串型

作用:用于表示一串字符

1.c风格字符串 char 变量名[] = “字符串值”

2. c++风格字符串 string 变量名 = “字符串值”  c++字符串要引用头文件 include<string>

        4.5布尔类型 bool (只占一个字节大小)

作用:布尔类型数据代表真或假的值

bool类型只有两个值:

true --- 真 本质是1。

false --- 假 本质是0。       

5.sizeof关键字

作用:利用sizeof关键字可以统计数据类型所占内存大小

语法:sizeof(数据类型/变量)

6.数据的输入

作用:用于从键盘获取数据

关键字:cin

语法: cin >> 变量

7. goto语句

作用:可以无条件跳转语句

语法 goto 标记;

解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的位置。

8. 一维数组 // 数组名是常量,进行初始化后,不能再对其进行赋值操作

三种定义方式:

        数据类型 数组名[数组长度]

        数据类型 数组名[数组长度] = {值1,值2...}// 这种定义方式,如果在初始化时没有给足够的数,数组会自动将后面的数据默认为0

        数据类型 数组名[] =  {值1,值2...}

9.二维数组定义方式:

1. 数据类型 数组名[行数][列数];

2. 数据类型 数组名[行数][列数] = { {数据1,数据2},{数据3,数据4}};

3. 数据类型 数组名[行数][列数] = {数据1,数据2,数据3,数据4};

4. 数据类型 数组名[][列数] = {数据1,数据2,数据3,数据4}

10.函数:

作用:将一段经常使用的代码封装起来,减少重复代码。

一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能。

        10.1        函数的定义

                函数的定义一般主要有五个步骤:

                        1.返回值类型

                        2.函数名

                        3.参数列表

                        4.函数体语句

                        5.return表达

        10.2 值传递和引用传递

值传递,形参的值改变并不会影响实参的值 

引用传递,形参的值改变会直接影响实参的值

地址传递,形参的值改变会直接影响实参的值,地址传递在实际调用时,需要传递地址如h(&a,&b)

// 数组 实际进行的是地址传递

11. 指针 (指针就是一个地址)

在64位系统下指针占用八个字节,在32位操作系统下指针占用四个字节(无论是哪种数据类型)

      作用:可以通过指针间接访问内存

      *内存编号是从0开始记录的,一般用十六进制数字表示

      *可以利用指针变量保存地址

        10.1 指针变量的定义和使用:

                语法: 数据类型 * 变量名;

                例如:

                使用: 可以通过解引用的方式来找到指针指向的内存地址中的有效数据, 在指针前加*,例如 *p ,*代表解引用。

             10.2 空指针和野指针

                        空指针:指针变量指向内存中编号为0的空间   NULL

                        用途:初始化指针变量

                        注意:空指针指向的内存是不可以访问的

                         注意:0-255之间的内存编号是系统占用的,因此不可以访问

                         野指针:指针变量指向非法的内存空间。在程序中,空指针和野指针都不是我们申请的空间,所以我们权限对其进行访问。

             10.3 const修饰指针。

                                const修饰指针有三种情况:

                                        1.const修饰指针 ----- 常量指针   例如: const int *p = &a;

                                                 特点:指针的指向可以修改,但是指针指向的数据值不可以修改 

                                        2.const修饰常量 ----- 指针常量   例如 int * const p = &a;

                                                特点:指针的指向不可以修改,但是指针指向的数据值可以修改                                             3. const即修饰指,又修饰常量。 例如:const int * const p = &a;

                                                特点:指针的指向和指针指向的数据值都不可以修改。

                10.4指针和数组

                        作用:利用指针访问数组中元素

                10.5指针和函数

        void bubbleSort(int *arr, int len)

        void bubbleSort(int arr[], int len) // 这两种定义方式都可以。

12.结构体

            12.1 结构体基本使用方法

                基本概念: 结构体属于用户自定义的数据类型,允许用户存储不同的数据类型。

                结构体定义和使用

                        语法:struct 结构体名 {结构体成员列表};

                        通过结构体创建变量的方式:

                                struct 结构体名 变量名

                                struct 结构体名 变量名 = {成员1值, 成员2值...}

                                定义结构体时顺便创建变量

// 在创建变量时,struct关键字可以省略 

                 12.2 结构体数组

                        作用:将自定义的结构体放入到数组中方便维护

                        语法:struct 结构体名 数组名[元数个数] = { {}, {},......{} }

                        

                12.3 结构体指针

                        作用:通过指针访问结构体中的成员

                        利用操作符->可以通过结构体指针来访问结构体属性

                12.4结构体嵌套结构体

                        作用:结构体中的成员可以是另一个结构体

                12.5 结构体做函数参数

                        作用:将结构体作为参数向函数中传递

                        传递方式有三种:

                               值传递  // 实际是赋值,如果数据量特别大,使用值传递会消耗大量空间和时间

                               地址传递

                              引用传递

                12.6 结构体中const使用场景

                        作用:用const来防止误操作

                        

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Filament】材质系统

1 前言 本文主要介绍 Filament 的材质系统&#xff0c;官方介绍详见 → Filament Materials Guide。材质系统中会涉及到一些空间和变换的知识点&#xff0c;可以参考&#xff1a;【Unity3D】空间和变换、【Unity3D】Shader常量、变量、结构体、函数、【OpenGL ES】MVP矩阵变换、…

IDEA中启动项目报堆内存溢出或者没有足够内存的错误

1.报错现象 java.lang.OutOfMemoryError: Java heap space 或者 Could not reserve enough space for object heap 2.解决办法 在运行配置中VM选项后加下面的配置&#xff1a; -server -XX:MaxHeapSize256m -Xms512m -Xmx512m -XX:PermSize128M -XX:MaxPermSize256m 3.JVM虚…

Conmi的正确答案——eclipse C/C++显示“未解析的包含:<xxx.h>”/“Unresolved inclusion: <xxx.h>”

eclipse IDE 版本&#xff1a;2023-12 部分采自&#xff1a;解决方法&#xff1a;关于问题 “C - Unresolved inclusion: <iostream>” 解释事项&#xff1a;方法一可能版本不同&#xff0c;部分界面修改了。这里使用的是方法二的解决方法。&#xff08;或者各位大神的描…

Gartner发布数据安全治理指南:采取四个关键步骤,加快数据安全治理的采用

部署数据安全控制措施是为了保护数据及隐私&#xff0c;但业务领导者通常采用与业务成果直接相关的评判标准对数据进行分类&#xff0c;这与安全领域使用的数据分类观点不同。首席信息安全官&#xff08;CISO&#xff09;应克服沟通障碍&#xff0c;展示如何通过增强数据安全来…

Verilog刷题笔记15

题目&#xff1a; An adder-subtractor can be built from an adder by optionally negating one of the inputs, which is equivalent to inverting the input then adding 1. The net result is a circuit that can do two operations: (a b 0) and (a ~b 1). See Wikipe…

15.云原生之k8s容灾与恢复实战

云原生专栏大纲 文章目录 Velero与etcd介绍Velero与etcd备份应用场景Velero与etcd在k8s备份上的区别 Velero备份恢复流程备份工作流程Velero备份时&#xff0c;若k8s集群发送变化&#xff0c;会发发生情况&#xff1f;Velero 备份pv&#xff0c;pv中数据变化&#xff0c;会发发…

k8s---对外服务 ingress

目录 目录 目录 ingress与service ingress的组成 ingress-controller&#xff1a; ingress暴露服务的方式 2.方式二&#xff1a;DaemonSethostnetworknodeSelector DaemonSethostnetworknodeSelector如何实现 3.deploymentNodePort&#xff1a; 虚拟主机的方式实现http代…

CHAPTER 9: 《DESIGN A WEB CRAWLER》第9章 《设计一个web爬虫》

CHAPTER 9: 《DESIGN A WEB CRAWLER》第九章 设计一个web爬虫 在本章中&#xff0c;我们将重点介绍网络爬虫设计&#xff1a;一种有趣而经典的系统设计 面试问题。 网络爬虫被称为机器人或蜘蛛。它被搜索引擎广泛用于发现网络上的新内容或更新内容。内容可以是网页、图像、视频…

TCP的三次握手,四次挥手

三次握手 第一次握手&#xff1a;客户端发送SYN报文&#xff0c;井发送seq为x序列号给服务端&#xff0c;等待服务端的确认第二次握手&#xff1a;服务端发送SYNACK报文&#xff0c;并发送seq为Y的序列号&#xff0c;在确认序列号为x1第三次握手&#xff1a;客户端发送ACK报文&…

基于Python flask京东服装数据分析可视化系统,可视化多种多样

技术介绍 京东服装品牌数据分析系统是基于Python Flask框架开发的一款用于分析和展示京东服装品牌数据的Web应用程序。该系统利用Flask提供了一个简单而强大的后端框架&#xff0c;结合Request库进行网络爬虫获取京东服装品牌数据&#xff0c;并使用Pyecharts进行可视化展示&a…

【Internet Protocol】ip介绍,如何组局域网实现远程桌面和文件共享

文章目录 1.何为“上网”1.1 定义1.2 为什么连了WiFi就能上网了&#xff1f; 2.ip2.1 什么是ip2.2 为什么区分广域网和局域网&#xff0c;ip的唯一性2.3 如何查看设备的ip2.4 什么叫"ping"2.5 区分是否两个ip是否在同一局域网2.5.1 最稳妥的方式&#xff1a;ip&m…

VirtualBox安装kail虚拟机并配置内外网双网卡网络

VirtualBox安装kail虚拟机并配置内外网双网卡网络 Kali Linux是一份基于Debian的发行&#xff0c;它带有一套安全和计算机取证工具。本文档适用于在VirtualBox平台上安装kali-2023.4虚拟机。 1. 安装准备 1.1 安装平台 Windows 11 1.2. 软件信息 软件名称软件版本安装路径…

95%数据格式都支持?3D模型格式转换引擎HOOPS Exchange真绝了!

一、HOOPS Exchange概述 HOOPS Exchange是一款用于读写专有和开放CAD数据格式的通用工具包&#xff0c;专为开发3D工程应用程序而设计&#xff0c;通过单一界面&#xff0c;即可读取和写入30多种CAD文件格式&#xff0c;无需依赖任何CAD系统。HOOPS Exchange可以无缝集成到CAD…

【计算机图形学】习题课:Viewing

【计算机图形学】Viewing 部分问题与解答 CS100433 Computer Graphics Assignment 21 Proof the composed transformations defined in global coordinate frame is equivalent to the composed transformations defined in local coordinate frame but in different composing…

rust跟我学五:是否安装双系统

图为RUST吉祥物 大家好,我是get_local_info作者带剑书生,这里用一篇文章讲解get_local_info是怎么得到检测双系统的。 首先,先要了解get_local_info是什么? get_local_info是一个获取linux系统信息的rust三方库,并提供一些常用功能,目前版本0.2.4。详细介绍地址:[我的Ru…

ubuntu opengl安装使用

文章目录 1.opengl的安装2.安装GLFW3.安装glad4.调用示例参考 1.opengl的安装 OpenGL到底是什么。一般它被认为是一个API(Application Programming Interface, 应用程序编程接口)&#xff0c;包含了一系列可以操作图形、图像的函数。然而&#xff0c;OpenGL本身并不是一个API&…

Linux 系统之部署 h5ai 目录列表程序

一、h5ai 介绍 1.1&#xff09;h5ai 简介 h5ai 是用于 HTTP Web 服务器的现代文件索引器&#xff0c;专注于您的文件。目录以吸引人的方式显示&#xff0c;浏览它们通过不同的视图、面包屑和树概述得到增强。最初 h5ai 是 HTML5 Apache Index 的首字母缩写&#xff0c;但现在它…

申请开启|成为亚马逊云科技 Community Builder,共建云端社区!

在探索由技术打造的云端世界时&#xff0c;和同行者一起学习&#xff0c;与技术专家共同探讨是开发者成长的最佳助力&#xff01; 亚马逊云科技开发者社区 Community Builders 为技术爱好者和新兴思想领袖提供技术资源、学习和交流机会&#xff0c;帮助开发者探索、分享技术相关…

CMake+QT+大漠插件的桌面应用开发(QThread)

文章目录 CMakeQT大漠插件的桌面应用开发&#xff08;QThread&#xff09;简介环境项目结构配置编译环境代码 CMakeQT大漠插件的桌面应用开发&#xff08;QThread&#xff09; 简介 在CMakeQT大漠插件的桌面应用开发中已经给出了QT配合大漠插件开发桌面应用的样例 不过由于主…

macOS系统下载安装IDEA 操作流程

目录 第一步 进入官网&#xff0c;选择箭头指向的版本 第二步 下载完成后打开&#xff0c;拖动安装包安装​编辑 第三步 点击" project"&#xff0c;在JDK下拉框选择"Download JDK" 第四步 下载完成以后&#xff0c;点击右下角的Create按钮。 第一步 进…