20240408,C++数组,函数,指针

是谁说回老家学习结果摆烂了两天,是我,Π—Π! Π—Π!! 

一,数组——同C

1.1一维数组

1.0   相同类型,连续内存,
1.1   定义格式:数据类型 数组名【长度】;数组类型 数组名【长度】={1,2,3,……};数组类型 数组名【】={1,2,3,……};
1.2   遍历数组,初始化,下标【0-N】
1.3   数组名:数组内存长度,数组首地址

#include <iostream>
using namespace std;
int main()
{int arr[] = { 1,2,4,5,6,7,8 };for (int i = 0; i < 7; i++){cout <<i<<"  " << arr[i] << "\t";//arr[8]未定义?强行输出会输出某超小负数cout << "arr[]——" << &arr[i] << endl;cout << "arr[]——" << (int)&arr[i] << endl;}cout << endl;cout << "数组大小" << sizeof(arr) << endl;cout << "数组每个元素大小" << sizeof(arr[1]) << endl;cout << "数组元素个数" << sizeof(arr)/sizeof(arr[1]) << endl;//取地址cout << "arr——" << arr << endl;cout << "arr——" << (int)arr << endl;//十六进制地址强转为十进制return 0;system("pause");
}
1.1.1 冒泡排序

冒泡排序是两轮循环,对比轮数==数组大小—1;每轮对比次数==数组大小—当前轮数—1;

for (int i = 0; i < 9-1; i++)//错误,只走了一层循环
{if (a[i] > a[i + 1]){a[i] +=a[i + 1];a[i+1] = a[i] - a[i+1];a[i] = a[i] - a[i + 1];if (i == sizeof(a) / sizeof(a[0]) - 1 - i){break;}}
}
#include <iostream>//正确
using namespace std;
int main()
{int a[9] = { 4,2,8,0,5,7,1,3,9 };//cout << sizeof(a) / sizeof(a[0]) << endl;for (int i = 0; i < 9-1; i++){for (int j = 0; j < 9 - i - 1; j++){if (a[j] > a[j + 1]){a[j] += a[j + 1];a[j + 1] = a[j] - a[j + 1];a[j] -= a[j + 1];}}}for (int t = 0; t < 9; t++){cout << a[t] << endl;}return 0;system("pause");
}
1.2 二维数组

同C ,数组定义:四种,行可以省,列不能

#include <iostream>
using namespace std;
int main()
{int A[3][5];int B[2][3] = { {1,3,3},{2,2,2} };int C[2][2] = { 2,33,4,3, };int D[][3] = { 2,33,4,3 };cout <<"数组B内存空间\t"<< sizeof(B) << endl;cout << "数组B一个元素占内存空间\t"<<sizeof(B[0][0]) << endl;cout << "数组B一行占内存空间\t" << sizeof(B[0]) << endl;cout << "数组B行数\t" << sizeof(B) / sizeof(B[0]) << endl;cout << "数组B列数\t" << sizeof(B[0]) / sizeof(B[0][0]) << endl;cout << B << endl;cout << (int)B << endl;cout << &B[0][0] << endl;cout << (int)&B[0][0] << endl;cout << B[0] << endl;cout << (int)B[0] << endl;cout << B[1] << endl;cout << (int)B[1] << endl;cout << "每一个元素的地址" << endl;for (int i = 0; i < 2; i++){for (int j = 0; j < 3; j++){cout << &B[i][j] << endl;cout << (int)&B[i][j] << endl;}}return 0;system("pause");
}
1.2.1统计成绩
#include <iostream>
#include<string>
using namespace std;
int main()
{int scores[3][3] = { {100,100,100},{90,50,100},{60,70,80} };//int SCORES[3] = { 0 };string names[3] = { "张三","李四","王五" };for (int i = 0; i < 3; i++){int sum = 0;cout << names[i];for (int y = 0; y < 3; y++){//SCORES[i] += scores[i][y];sum+= scores[i][y];}cout << sum << endl;}system("pause");
}

二,函数——同C

返回值类型,函数名,参数列表,函数体语句,RETURN表达式
实参,形参,值传递时,形参的改变不会影响实参
声明(可以多次),定义(一次),同C

分文件编写:.H头文件,写函数声明,.CPP源文件,写函数定义

#include<iostream>//头文件
using namespace std;int swap(int num1, int num2);
#include<iostream>//函数文件
#include "swap.h"
using namespace std;int swap(int num1, int num2)
{cout << "函数内交换前num1=" << num1 << endl;cout << "函数内交换前num2=" << num2 << endl;num1 += num2;num2 = num1 - num2;num1 = num1 - num2;cout << "函数内交换后num1=" << num1 << endl;cout << "函数内交换后num2=" << num2 << endl;return num1, num2;
}
#include<iostream>//文件
#include "swap.h"
using namespace std;int main()
{int a = 90;int b = 45;cout << "函数外交换前a=" << a << endl;cout << "函数外交换前b=" << b << endl;swap(a, b);cout << "函数外交换后a=" << a << endl;cout << "函数外交换后b=" << b << endl;return 0;system("pause");
}

三,指针——同C

数据类型 * 指针变量名,int * p=&a;
指针所占空间:32位4,64位8

#include<iostream>
using namespace std;int main()
{int a = 10;int* p = &a;cout << *p << endl;cout << p << endl;cout << sizeof(p) << endl;cout << sizeof(char*) << endl;cout << sizeof(float*) << endl;cout << sizeof(double*) << endl;return 0;system("pause");
}
 3.1  空指针和野指针

INT*P=NULL,不可访问,常用于初始化,0-255的内存编号系统占用
野指针,没有申请访问权限,不可访问

#include<iostream>
using namespace std;int main()
{int* p = NULL;//cout << *p << endl; 不可访问cout << p << endl;int* pp = (int*)0x1100;//cout << *p << endl;没有申请权限cout << pp << endl;return 0;system("pause");
}
3.2 常量指针&指针常量

const int*p,常量指针,指针指向的值不能修改,指针的指向可以该,就是这类指针只能访问,不能修改
int *const p,指针常量,指向不可修改,指向的数据可以访问和修改【即P的地址的数值不可修改
const int * const p,指向和数据都不可以修改,只能访问
const后面紧跟的是指针还是常量,指针-常量指针,常量-指针常量

#include<iostream>
using namespace std;int main()
{int a = 90;int b = 100;const int* p = &a;cout << p << endl;cout << *p << endl;a = 111;cout << p << endl;cout << *p << endl;//*p = 222;不可以p = &b;cout << p << endl;cout << *p << endl;cout << endl;int * const pp = &a;cout << pp << endl;cout << *pp << endl;//pp = &b;不可以,指向不可修改*pp = 77;cout << pp << endl;cout << *pp << endl;const int* const ppp = &a;cout << ppp << endl;cout << *ppp << endl;//ppp = &b;//*ppp = 44;//指向不可以修改,数据只能访问不可以修改return 0;system("pause");
}
 3.3 指针和数组
#include<iostream>
using namespace std;int main()
{int a[10] = { 1,2,3,4,5,6,7,8,9,10 };int* p = a;cout << "第1个数组元素访问——" << *p << endl;p++;cout << "第2个数组元素访问——" << *p << endl;p = a;//遍历数组1for (int i = 0; i < 10; i++){//cout << a[i] << " ";cout << *p << " ";p++;}cout << endl;p = a;//遍历数组2for (int i = 0; i < 10; i++){cout << p[i] << " ";}cout << endl;return 0;system("pause");
}
3.4 指针和函数——地址传递(可以改变实参) 
#include<iostream>//头文件
using namespace std;int swap(int *num1, int *num2);
#include<iostream>//函数文件
#include "swap.h"
using namespace std;int swap(int *num1, int *num2)
{cout << "函数内交换前*num1=" << *num1 << endl;cout << "函数内交换前*num2=" << *num2 << endl;*num1 += *num2;*num2 = *num1 - *num2;*num1 = *num1 - *num2;cout << "函数内交换后*num1=" << *num1 << endl;cout << "函数内交换后*num2=" << *num2 << endl;return *num1, *num2;
}
#include<iostream>//文件
#include "swap.h"
using namespace std;int main()
{int a = 90;int b = 45;cout << "函数外交换前a=" << a << endl;cout << "函数外交换前b=" << b << endl;swap(&a, &b);cout << "函数外交换后a=" << a << endl;cout << "函数外交换后b=" << b << endl;return 0;system("pause");
}
 3.5 指针,数组,函数——例:冒泡排序函数版
#include<iostream>//头文件
using namespace std;void bubblesort(int* p,int n);
#include<iostream>//函数文件
#include "bubblesort.h"
using namespace std;void bubblesort(int* p,int n) 
{for (int i = 0; i < n - 1; i++){for (int y = 0; y < n - 1 - i; y++){if (p[y] > p[y + 1]){p[y] += p[y + 1];p[y + 1] = p[y] - p[y + 1];p[y] -= p[y + 1];}}}
}

 

#include<iostream>//文件
#include "bubblesort.h"
using namespace std;int main()
{int a[9] = { 4,2,8,0,5,7,1,3,9 };bubblesort(a, 9);for (int i = 0; i < 9; i++){cout << a[i] << endl;}return 0;system("pause");
}

 学了才知道和C一样,咱就是说,咱不敢跳啊
不过二倍速很快的

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

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

相关文章

uni-app(H5)论坛 | 社区 表情选择 UI组件

项目源码请移步&#xff1a;bbs 效果 实现思路 表情切换 人物、动物、小黄人不同表情之间的切换实际就是组件的切换 emoji表情 emoji表情本身就是一种字符 如需其他emoji表情可参考 EmojiAll中文官方网站 需要注意的就是数据库的存储格式需要支持emoji表情&#xff0c;我项…

车载ABS解释

车载ABS是指车辆上的防抱死制动系统&#xff08;Anti-lock Braking System&#xff09;。ABS系统是一种车辆安全系统&#xff0c;旨在防止车辆在紧急制动时车轮锁死&#xff0c;从而帮助司机更好地控制车辆并减少失控的可能性。 ABS系统通过感知车轮的转速并控制制动系统&…

第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组 题解

VP比赛链接 : 数据加载中... - 蓝桥云课 1 . 九进制 转 十进制 直接模拟就好了 #include <iostream> using namespace std; int main() {// 请在此输入您的代码int x 22*92*81*9;cout << x << endl ;return 0; } 2 . 顺子日期 枚举出每个情况即可 : …

第8章 数据集成和互操作

思维导图 8.1 引言 数据集成和互操作(DII)描述了数据在不同数据存储、应用程序和组织这三者内部和之间进行移动和整合的相关过程。数据集成是将数据整合成物理的或虚拟的一致格式。数据互操作是多个系统之间进行通信的能力。数据集成和互操作的解决方案提供了大多数组织所依赖的…

sh与bash:Shell脚本中的微妙差异

在Unix和Linux的世界中&#xff0c;Shell是用户与操作系统交互的主要界面。Shell提供了命令行界面&#xff0c;使得用户能够执行各种命令和操作。在众多的Shell中&#xff0c;sh和bash是最常见且使用最广泛的两种。尽管它们在很多方面相似&#xff0c;但在功能、特性和语法上&a…

配置交换机 SSH 管理和端口安全——实验1:配置交换机基本安全和 SSH管理

实验目的 通过本实验可以掌握&#xff1a; 交换机基本安全配置。SSH 的工作原理和 SSH服务端和客户端的配置。 实验拓扑 交换机基本安全和 SSH管理实验拓扑如图所示。 交换机基本安全和 SSH管理实验拓扑 实验步骤 &#xff08;1&#xff09;配置交换机S1 Switch>enab…

【r-tree算法】一篇文章讲透~

目录 一、引言 二、R-tree算法的基本原理 1 数据结构 2 插入操作 3 删除操作 4 查询操作 5 代码事例 三、R-tree算法的性能分析 1 时间复杂度 2 空间复杂度 3 影响因素 四、R-tree算法的变体和改进 1 R*-tree算法 2 X-tree算法 3 QR-tree算法 五、R-tree算法的…

深度优先搜索算法C实现

深度优先搜索 (DFS, Depth-First Search) 是一种用于遍历或搜索树或图的算法。这个算法会尽可能深地搜索树的分支。当达到树的末端时,它会回溯到树的前一个节点,直到找到未探索的路径。 下面是一个简单的深度优先搜索的C语言实现,这个实现是在一个无向图中进行的。在这个例…

Hive某字段空值用同组该字段非空值填充

背景&#xff1a; 工作中遇到这样一个业务场景&#xff1a;系统中记录订单提报和订单审核通过两个时间点某业务状态&#xff0c;开发做标记时一个订单产生了两条记录&#xff0c;即提报时记录状态1字段&#xff0c;状态2字段为空&#xff1b;审核通过时产生新纪录记录状态2字段…

axure谷歌插件(直接下载)

axure谷歌插件 在网上找一个谷歌的axure&#xff0c;不是登陆就是收费&#xff0c;离谱。找了好久才找到这个&#xff0c;我下载保存到网盘了&#xff0c;直接下载就ok&#xff0c;永久无提取码。 下载插件文件&#xff0c;打开开发者模式&#xff0c;直接拖进来就ok。 网盘…

esxi上给centos7虚拟机扩容硬盘

原来centos7硬盘分配的空间只有40GB 需要直接扩容到200GB 扩容前 扩容后 扩容步骤&#xff1a; 1 .在esxi平台上关机虚拟机&#xff0c;将硬盘调整为200GB&#xff0c;然后开机 2.请出chatGPT 1. 创建新分区 使用剩余的磁盘空间创建一个新的分区。你可以使用fdisk&#xf…

Flink Keyed State的优化与实践

本期作者 1.背景 Flink SQL在业务使用中有较多的双流join场景&#xff0c;当左右流的流量都较大&#xff0c;Join的等待时间即使为1小时&#xff0c;Flink Keyed State&#xff08;Flink State分Operator State和Keyed State&#xff0c;后文所有State均代表后者&#xff09;的…

opencv识别图形轮廓并计算面积以及在输出图片上显示中文字体

前言 opencv识别带有轮廓的图形,主要是常见数学图形如方形、圆形以及不规则图形,并计算其面积(像素统计)。 配置: 平台:windows 工具:visual studio code 语言:python 库:opencv、Pillow 一、图形识别与计算 opencv处理图形轮廓的步骤如下: 1、将图片转为灰度图:…

数据库(mysql)-基本查询语句(DQL)

查询语句 这边查询是给予一定表格,这边先做个解释 教师表包括(name(姓名),gender(性别),salary(工资),title(职位),subject_id(课程的编号),comm(奖金)) 学生表包括(姓名(name),gender(性别),job(职位),生日(birth)) 模版 SELECT 字段名 FROM 查询表 WHERE 查询语句 或与非…

k8s_入门_命令详解

命令详解 kubectl是官方的CLI命令行工具&#xff0c;用于与 apiserver进行通信&#xff0c;将用户在命令行输入的命令&#xff0c;组织并转化为 apiserver能识别的信息&#xff0c;进而实现管理k8s各种资源的一种有效途径 1. 帮助 2. 查看版本信息 3. 查看资源对象等 查看No…

Linux应用开发(3):Linux时间操作(time、mktime、localtime等)

1. 简述 在Linux系统中&#xff0c;时间操作函数是编程中经常使用的一部分&#xff0c;它们允许程序获取和设置系统时间&#xff0c;以及对时间进行各种处理。以下是一些常用的时间操作函数的详细介绍。 2. 时间操作 &#xff08;1&#xff09;time(): 获取1970年1月1日以来的…

Docker使用报错信息dial unix /var/run/docker.sock: connect: permission denied

报错信息dial unix /var/run/docker.sock: connect: permission denied masterlocalhost:~$ docker ps Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/container…

爬虫入门教程(一)

爬虫入门教程 1.什么是爬虫 爬虫是一种自动获取网站数据的程序或脚本。它可以自动模拟人类访问网站,获取网页源代码,解析并提取出所需的数据。 爬虫的工作原理类似于搜索引擎的索引程序&#xff0c;它们会按照预定的规则和算法在互联网上不断地爬取网页&#xff0c;收集信息…

二维相位解包裹理论算法和软件【全文翻译-掩膜切割算法(4.4)】

4.4 掩膜切割算法 在上一节中,我们了解到质量引导路径跟踪算法可以解决一些相位解包问题,而在这些问题上,戈尔茨坦算法会因为分支切割的错位而失败。这是因为质量引导方法采用了更多的信息(质量图)来引导解包路径。在本节中,我们将这一想法与戈尔茨坦算法相结合,产生了…

k8s知识

k8s是用于容器编排和管理的&#xff0c;docker或者ctr是k8s的运行时&#xff0c;k8s通过容器运行时来启动容器&#xff0c;容器启动需要镜像&#xff0c;镜像可以用docker构建&#xff0c;dockerfile就是用于自定义如何构建镜像&#xff0c;所以上面那套流水线就是先用dockerfi…