c++初始

目录

一数据类型

1.

2.sizeof

3.布尔

4.字符串类型

二.数据输入与输出

1.输出

 2.输入

三.运算

1.加减乘除取模,++,--都一样

2.逻辑非与或,与C语言一样

3.比较运算符,与C语言一样

4.三目运算符(与C语言一样)

四.条件,循环语句与C语言一样

五.一维数组

1.特点

2.定义

3.冒泡排序

六.二维数组

1.定义

2.地址

七.函数

1.基础函数跟C语言一样

2.函数的分文件编写:

八.指针

1.基础(与C语言一样)

2.指针所占内存空间

3.空指针/野指针

4.const(也可以详见C语言书)


一数据类型

1.

| **数据类型**        | **占用空间**                                    | 取值范围         |

| short(短整型)       | 2字节                                           | (-2^15 ~ 2^15-1) |

| int(整型)           | 4字节                                           | (-2^31 ~ 2^31-1) |

| long(长整形)        | Windows为4字节,Linux为4字节(32位),8字节(64位) | (-2^31 ~ 2^31-1) |

| long long(长长整形) | 8字节                                           | (-2^63 ~ 2^63-1) |

| float        | 4字节        | 7位有效数字      |

| double       | 8字节        | 15~16位有效数字 |

|char           | 1字节 |

C和C++中字符型变量只占用1个字节

2.sizeof

统计数据类型所占内存大小

sizeof(数据类型);

3.布尔

bool a  = true  --- 真(本质是1)

bool a = false --- 假(本质是0)

#include<iostream>
using namespace std;
int main() {bool flag = true;cout << flag << endl; // 1flag = false;cout << flag << endl; // 0cout << "size of bool = " << sizeof(bool) << endl; //1system("pause");return 0;
}

PS:输入的时候,所有非零值都代表的是真

例如:

#include<iostream>
using namespace std;
int main()
{bool a =199;cout << "a是真吗,a = " << a << endl;//a是真吗,a = 1return 0;
}

4.字符串类型

(1)C语言风格

        char 变量名[] = "......";

(2)c++风格

        #include<string>;

        string s = "........";

#include<iostream>
#include<string>
using namespace std;
int main()
{char s1[] =  "hhhh";string s2 = "阿萨德";cout<< s1 << s2<<endl;return 0;
}

二.数据输入与输出

1.输出

cout<< "(要输出的语句)"<< (变量)<< ......  <<endl;

        PS:endl是换行符

#include<iostream>
using namespace std;
int main()
{bool a =true;cout << "a是真吗,a = " << a <<"哎嘿嘿"<< endl;return 0;
}

 2.输入

cin >> 变量

#include<iostream>
#include<string>
using namespace std;
int main()
{string str;cout << "请输入字符串型变量:" << endl;cin >> str;cout << str << endl;
}

三.运算

1.加减乘除取模,++,--都一样

        PS:浮点型不能取模运算

2.逻辑非与或,与C语言一样

3.比较运算符,与C语言一样

唯一需要注意的是,使用时要加括号,否则会报错(无法确定需要哪个 函数模板 "std::endl" 实例)

        cout << a == b << endl;

#include<iostream>
using namespace std;
int main()
{int a =10;int b = 20;cout << (a==b) << endl;return 0;
}

4.三目运算符(与C语言一样)

expression1 ? expression2:expression3;

如果表达式1的值为真,执行表达式2,否则执行表达式3。

四.条件,循环语句与C语言一样

五.一维数组

1.特点

特点1:数组中的每个数据元素都是相同的数据类型

特点2:数组是由连续的内存位置组成的

特点3: 可以统计整个数组在内存中的长度

特点4: 可以获取数组在内存中的首地址

#include<iostream>
using namespace std;
int main() {//数组名用途//1、可以获取整个数组占用内存空间大小int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };cout << "整个数组所占内存空间为: " << sizeof(arr) << endl;cout << "每个元素所占内存空间为: " << sizeof(arr[0]) << endl;cout << "数组的元素个数为: " << sizeof(arr) / sizeof(arr[0]) << endl;//2、可以通过数组名获取到数组首地址cout << "数组首地址为: " << arr << endl;cout << "数组中第一个元素地址为: " << &arr[0] << endl;cout << "数组中第二个元素地址为: " << &arr[1] << endl;//arr = 100; 错误,数组名是常量,因此不可以赋值return 0;
}

2.定义

(1)数据类型  数组名[ 数组长度 ]; 

(2)数据类型  数组名[ 数组长度 ] = { 值1,值2 ...};`

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

3.冒泡排序

#include<iostream>
using namespace std;
int main() {int arr[9] = { 4,2,8,0,5,7,1,3,9 };for (int i = 0; i < 9 - 1; i++){for (int j = 0; j < 9 - 1 - i; j++){if (arr[j] > arr[j + 1]){int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}for (int i = 0; i < 9; i++){cout << arr[i] << " ";}return 0;
}

六.二维数组

1.定义

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

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

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

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

        PS:在定义二维数组时,如果初始化了数据,可以省略行数

2.地址

        与C语言一样

        二维数组的变量名 = 二维数组地址 =首元地址 = 第一行地址

#include<iostream>
using namespace std;
int main() {//二维数组数组名int arr[2][3] ={{1,2,3},{4,5,6}};cout << "二维数组大小: " << sizeof(arr) << endl;//24,整个二维数组大小cout << "二维数组一行大小: " << sizeof(arr[0]) << endl;//12cout << "二维数组元素大小: " << sizeof(arr[0][0]) << endl;//4cout << "二维数组行数: " << sizeof(arr) / sizeof(arr[0]) << endl;//2cout << "二维数组列数: " << sizeof(arr[0]) / sizeof(arr[0][0]) << endl;//3//地址cout << "二维数组首地址:" << arr << endl;//0x61fe00cout << "二维数组第一行地址:" << arr[0] << endl;//0x61fe00cout << "二维数组第二行地址:" << arr[1] << endl;cout << "二维数组第一个元素地址:" << &arr[0][0] << endl;//0x61fe00cout << "二维数组第二个元素地址:" << &arr[0][1] << endl;return 0;
}

七.函数

1.基础函数跟C语言一样

2.函数的分文件编写:

        1. 创建后缀名为.h的头文件  

        2. 在头文件中写函数的声明

//swap.h文件
#include<iostream>
using namespace std;//实现两个数字交换的函数声明
void swap(int a, int b);

        3. 创建后缀名为.cpp的源文件

        4. 在源文件中写函数的定义(注意加上库函数xxx.h)

//swap.cpp文件
#include "swap.h"
#include<iostream>
using namespace std;
void swap(int a, int b)
{int temp = a;a = b;b = temp;cout << "a = " << a << endl;cout << "b = " << b << endl;
}
int main() 
{int a = 100;int b = 200;swap(a, b);return 0;
}

八.指针

1.基础(与C语言一样)

牢记:&地址符

            *解引符

#include<iostream>
using namespace std;
int main()
{int a =10;int * p = &a;cout << p<<endl;//0x61fe14cout << &a;//0x61fe14return 0;
}

2.指针所占内存空间

#include<iostream>
using namespace std;
int main()
{int a =10;int * p = &a;cout << sizeof(p)<<endl;//8return 0;
}

总结:所有指针类型在64位操作系统下是8个字节

        所有指针类型在32位操作系统下是4个字节

3.空指针/野指针

#include<iostream>
using namespace std;
int main() {//指针变量p指向内存地址编号为0的空间int * p = NULL;cout << p << endl;//0//访问空指针报错 //内存编号0 ~255为系统占用内存,不允许用户访问cout << *p << endl;return 0;
}

    //访问空指针报错

    //内存编号0 ~255为系统占用内存,不允许用户访问

(2)野指针:指针变量指向非法的内存空间

4.const(也可以详见C语言书)

#include<iostream>
using namespace std;
int main() {int a = 10;int b = 10;//const修饰的是指针,指针指向可以改,指针指向的值不可以更改const int * p1 = &a; p1 = &b; //正确//*p1 = 100;  报错//const修饰的是常量,指针指向不可以改,指针指向的值可以更改int * const p2 = &a;//p2 = &b; //错误*p2 = 100; //正确//const既修饰指针又修饰常量const int * const p3 = &a;//p3 = &b; //错误//*p3 = 100; //错误return 0;
}

总结:const修饰常量,就是指针常量,不可以改指针方向,可以改值。      

            int * const p2 = &a;

            //p2 = &b; //错误

            *p2 = 100; //正确

       const修饰指针,就是常量指针,不可以改值,可以改指针方向。

                    const int * p1 = &a;

                    p1 = &b; //正确

                    //*p1 = 100;  报错

硬记:const  p,不可以改变指针方向, int * const p2 = &a;

           const int*,可以改变指针方向,  const int * p1 = &a;

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

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

相关文章

数字电路-基础逻辑门实验

基础逻辑门是数字电路设计的核心元件&#xff0c;它们执行的是基本的逻辑运算。通过这些基本运算&#xff0c;可以构建出更为复杂的逻辑功能。常见的基础逻辑门包括与门&#xff08;AND&#xff09;、或门&#xff08;OR&#xff09;、非门&#xff08;NOT&#xff09;、异或门…

HC32功能复用说明

目录 引脚有哪些功能如何选择功能代码 引脚有哪些功能 数据手册中&#xff0c;每一个引脚功能有至多64个&#xff0c;对应列Func0~Func63 其中&#xff0c;Func0 ~Func31在《表 2-1 引脚功能表》中列出 Func32~Func63在《表 2-2 Func32~63 表》中列出。 Func32~Func63中的功…

数据库管理-第293期 奇怪的sys.user$授权+(20250210)

数据库管理293期 2025-02-10 数据库管理-第293期 奇怪的sys.user$授权&#xff08;20250210&#xff09;1 清空shared pool2 SR反馈总结 数据库管理-第293期 奇怪的sys.user$授权&#xff08;20250210&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文&#xff09…

AutoMQ 如何实现没有写性能劣化的极致冷读效率

前言 追赶读&#xff08;Catch-up Read&#xff0c;冷读&#xff09;是消息和流系统常见和重要的场景。 削峰填谷&#xff1a;对于消息来说&#xff0c;消息通常用作业务间的解耦和削峰填谷。削峰填谷要求消息队列能将上游发送的数据堆积住&#xff0c;让下游在容量范围内消费…

【大模型】本地部署DeepSeek-R1:8b大模型及搭建Open-WebUI交互页面

本地部署DeepSeek-R1:8b大模型 一、摘要及版本选择说明1.1 摘要1.2 版本选择 二、下载并安装Ollama三、运行DeepSeek-R1:8b大模型四、安装Open WebUI增强交互体验五、关闭Ollama开机自动启动六、DeepSeek大模型启停步骤 一、摘要及版本选择说明 1.1 摘要 作为一名对 AI 和生成…

DeepSeek大模型的发展的十问十答

DeepSeek大模型是由杭州深度求索人工智能基础技术研究有限公司开发的一款基于Transformer架构的大型语言模型&#xff0c;具体介绍如下&#xff1a; 1. 架构基础 Transformer架构&#xff1a;DeepSeek大模型基于Transformer架构&#xff0c;该架构由Google在2017年提出&#xf…

Avnet RFSoC基于maltab得5G 毫米波 开发工具箱

使用 MATLAB 连接到 AMD Zynq™ RFSoC 评估板。使用 RF 附加卡执行 OTA 测试。使用 HDL Coder 部署算法 版本要求&#xff1a; 大于 2023b 需要以下支持包之一&#xff1a; 适用于 Xilinx 基于 Zynq 的无线电&#xff08;R2023b 及更早版本&#xff09;的通信工具箱支持包适…

directx12 3d开发过程中出现的报错 九

报错&#xff1a; ThrowIfFailed(md3dDevice->CreateGraphicsPipelineState(&basePsoDesc, IID_PPV_ARGS(&mPSO))); 参数错误 当 md3dDevice->CreateGraphicsPipelineState 调用返回 “参数错误” 时&#xff0c;意味着传递给该函数的 D3D12_GRAPHICS_PIPELINE_…

计算机毕业设计Python+Spark知识图谱医生推荐系统 医生门诊预测系统 医生数据分析 医生可视化 医疗数据分析 医生爬虫 大数据毕业设计 机器学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

Vue事件处理 - 绑定事件

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue事件处理 - 绑定事件及事件处理 目录 事件处理 绑定方式 函数表达式 绑定函数名 输入框绑定事件 拿到输入框的值 传值加事件源 事件第三种写法 总结 事件处理 绑定方式 函数表达式 在按钮上使用函数表达式绑定事…

World of Warcraft [CLASSIC] 80 Four Horsemen (Naxxramas)

纳克萨玛斯 天启四骑士 Four Horsemen 图一&#xff1a;10人同生共死 图二&#xff1a;25人同生共死站位 图三&#xff0c;不做同生共死&#xff0c;做永恒者&#xff0c;击杀白马分布图&#xff0c;主要是不熟练乱跑&#xff0c;容易导致减员失败 永恒者&#xff0c;玩家无一…

DeepSeek与AI提示语设计的全面指南

当人人都会用AI时&#xff0c;你如何用得更好更出彩&#xff1f;本文全面介绍了DeepSeek的功能与使用方法&#xff0c;并深入探讨了AI提示语设计的核心技巧与进阶策略。通过精准的任务定义、提示语优化和人机协作&#xff0c;用户可以从AI的基础使用逐步进阶到创新应用&#xf…

DeepSeek-R1两种不同模型变体(deepseek-llm-7b-chat 和 deepseek-llm-7b-base)之间的区别

deepseek-llm-7b-chat 和 deepseek-llm-7b-base 是基于同一参数量级&#xff08;7B&#xff09;的两种不同模型变体&#xff0c;主要区别在于训练目标、适用场景和性能表现。以下是详细对比&#xff1a; 1. 核心区别 特性deepseek-llm-7b-basedeepseek-llm-7b-chat训练目标通用…

HarmonyOS Next 方舟字节码文件格式介绍

在开发中&#xff0c;可读的编程语言要编译成二进制的字节码格式才能被机器识别。在HarmonyOS Next开发中&#xff0c;arkts会编译成方舟字节码。方舟字节码长什么样呢&#xff1f;我们以一个demo编译出的abc文件&#xff1a; 二进制就是长这样&#xff0c;怎么去理解呢&…

TCP/IP 协议图解 | TCP 协议详解 | IP 协议详解

注&#xff1a;本文为 “TCP/IP 协议” 相关文章合辑。 未整理去重。 TCP/IP 协议图解 退休的汤姆 于 2021-07-01 16:14:25 发布 TCP/IP 协议简介 TCP/IP 协议包含了一系列的协议&#xff0c;也叫 TCP/IP 协议族&#xff08;TCP/IP Protocol Suite&#xff0c;或 TCP/IP Pr…

【C++11】lambda和包装器

1.新的类功能 1.1默认的移动构造和移动赋值 原来C类中&#xff0c;有6个默认成员函数&#xff1a;构造函数/析构函数/拷⻉构造函数/拷⻉赋值重载/取地址重 载/const 取地址重载&#xff0c;最后重要的是前4个&#xff0c;后两个⽤处不⼤&#xff0c;默认成员函数就是我们不写…

zabbix监控nginx指标

使用nginx作为web服务器&#xff0c;我们需要清晰知道&#xff1a; 1.nginx的工作状态 2.请求数有多少&#xff0c;多少是已经响应完成的&#xff0c;多少是响应失败的 3.nginx服务以及端口监听情况是否处于运行状态 当出现服务停止或者大量请求响应失败时&#xff0c;我们需要…

当Axure遇见DeepSeek:设计工具的革命性进化

从传统的平面设计软件到如今的交互原型工具&#xff0c;设计工具经历了多次革命性的进化。然而&#xff0c;随着人工智能技术的不断发展&#xff0c;设计工具正面临又一次重大的变革。Axure&#xff0c;作为设计界知名的原型设计工具&#xff0c;以其强大的功能和灵活的操作性&…

麒麟系统编译安装git

有些版本的麒麟系统上没有git&#xff0c;官网又找不到现成的安装包&#xff0c;只好下载编译进行编译安装 1、下载源码 下载源码&#xff0c;地址&#xff1a;https://git-scm.com/downloads/linux。 2、解压 直接鼠标右键解压&#xff0c;或者用命令行&#xff1a; tar …

【Matlab优化算法-第15期】基于NSGA-II算法的铁路物流园区功能区布局优化

基于NSGA-II算法的铁路物流园区功能区布局优化 一、前言 铁路物流园区的合理布局对于提高物流效率、降低运营成本具有重要意义。随着铁路物流的快速发展&#xff0c;传统的铁路货场需要升级为综合物流园区&#xff0c;以满足多式联运和综合物流服务的需求。本文将介绍一种基于…