c/c++:一维数组,初始化数组,循环打印数组,计算数组存储空间,数组元素个数,数组逆序算法

news2024/9/23 9:24:12

c/c++:一维数组,初始化数组,循环打印数组,计算数组存储空间,数组元素个数,数组逆序算法

2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,此时学会c++的话,
我所知道的周边的会c++的同学,可手握10多个offer,随心所欲,而找啥算法岗的,基本gg
提示:系列c++学习的基础和高阶知识,用于公司生产实践中,实实在在的公司部署产品要用的,因为c++速度快,
而java和Python速度慢,自然往硬件里面部署算法啥的,都得用c++或者c,因此本科学的c很重要,后来的Python或者java就没有那么重要了,
c/c++系列文章:
【1】c++:c语言优缺点,visual studio2019如何新建项目,写hello world程序
【2】c/c++:gcc安装,gcc编译hello world文件,system函数调用系统命令,sleep函数
【3】linux下gcc的编译过程和功能,预处理,编译,汇编,链接,.c预处理为.i文件.s文件.o文件.exe文件
【4】c/c++:windows平台下依赖的动态库,c底层是汇编语言,程序断点调试,反汇编,vs快捷键
【5】c/c++:数据类型,常量变量,标识符,有符号整型,无符号unsigned,字符类型,字符串类型,实数类型,浮点型,科学计数法
【6】c/c++:2进制、8进制、10进制、16进制和进制之间的转换,c语言输出匹配格式%
【7】c/c++:原码,反码,补码和常见的数据类型取值范围,溢出
【8】c/c++:类型限定符,printf输出格式,putchar,scanf,getchar
【9】c/c++:算术运算符,赋值运算,逻辑运算,比较运算,三目运算,逗号运算,数据类型转换
【10】c/c++:顺序结构,if else分支语句,do while循环语句,switch case break语句
【11】c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto


文章目录

  • c/c++:一维数组,初始化数组,循环打印数组,计算数组存储空间,数组元素个数,数组逆序算法
    • @[TOC](文章目录)
  • c/c++:数组
  • 数组逆序
  • 总结

c/c++:数组

在这里插入图片描述
简单定义数组:
相同数据类型的有序集合

void f37(void)
{
	int a = 10;
	int b = 10;
	int c = 10;//这三这么申明是无序的哦


}

你要是单独申请,反正是不挨着的,没有序

如果你想把这几个数据放一堆,那就需要定义数组

在这里插入图片描述

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include<Windows.h>

void f37(void)
{
	//int a = 10;
	//int b = 10;
	//int c = 10;//这三这么申明是无序的哦

	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//这十个就是连续紧挨着存的
	for (int i = 0; i < 10; i++)
	{
		printf("%x\n", &arr[i]);//挨个打印数组的地址
	}

}


int main(void)
{
	f37();

	system("pause");
	return 0;
}

在这里插入图片描述
看见没,他们的地址都是连续递增4字节的,int占4字节,懂?

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include<Windows.h>

void f37(void)
{
	int a = 10;
	int b = 10;
	int c = 10;//这三这么申明是无序的哦

	printf("%x\n", &a);
	printf("%x\n", &b);
	printf("%x\n", &c);

	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//这十个就是连续紧挨着存的
	for (int i = 0; i < 10; i++)
	{
		printf("%x\n", &arr[i]);//挨个打印数组的地址
	}

}


int main(void)
{
	f37();

	system("pause");
	return 0;
}

在这里插入图片描述
abc就没有连续哦

数组名就是数组的首地址
它就是指针,你都不用&取地址符号。

void f37(void)
{
	//int a = 10;
	//int b = 10;
	//int c = 10;//这三这么申明是无序的哦

	//printf("%x\n", &a);
	//printf("%x\n", &b);
	//printf("%x\n", &c);

	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//这十个就是连续紧挨着存的
	
	printf("%x\n", &arr);//数组名本身就是地址
	for (int i = 0; i < 10; i++)
	{
		printf("%x\n", &arr[i]);//挨个打印数组的地址
	}

}

在这里插入图片描述

int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//这十个就是连续紧挨着存的
	
	printf("%x\n", &arr);//数组名本身就是地址
	printf("%x\n", arr);//数组名本身就是地址
	for (int i = 0; i < 10; i++)
	{
		printf("%x\n", &arr[i]);//挨个打印数组的地址
	}

在这里插入图片描述

数组元素的个数怎么求?

数组的大小是sizeof(arr)
然后除某个元素的大小sizeof(arr[0])

所以整个数组有多少个元素?sizeof(arr)/sizeof(arr[0])


void f38(void)
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//这十个就是连续紧挨着存的
	printf("数组整个大小%d:\n", sizeof(arr));
	printf("arr[0]大小%d:\n", sizeof(arr[0]));
	printf("arr有几个?%d:\n", sizeof(arr)/sizeof(arr[0]));

}

在这里插入图片描述


void f38(void)
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//这十个就是连续紧挨着存的
	printf("数组整个大小%d:\n", sizeof(arr));
	printf("arr[0]大小%d:\n", sizeof(arr[0]));
	printf("arr有几个?%d:\n", sizeof(arr)/sizeof(arr[0]));
	int n = sizeof(arr) / sizeof(arr[0]);//数组个数
	for (int i = 0; i < n; i++)
	{
		printf("%x\n", arr[i]);//挨个打印数组
	}
}


int main(void)
{
	f38();

	system("pause");
	return 0;
}

在这里插入图片描述
有了个数n才能好办
java中
直接arr.length就好办了
c++应该也行,因为他们都是面向对象的编程

[]中不定义个数没关系,操作系统自动会给你计算的
在这里插入图片描述
注意那个全都是0的数组


void f38(void)
{
	//int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//这十个就是连续紧挨着存的
	int arr[10] = { 0 };//这十个就是连续紧挨着存的
	printf("数组整个大小%d:\n", sizeof(arr));
	printf("arr[0]大小%d:\n", sizeof(arr[0]));
	printf("arr有几个?%d:\n", sizeof(arr)/sizeof(arr[0]));
	int n = sizeof(arr) / sizeof(arr[0]);//数组个数
	for (int i = 0; i < n; i++)
	{
		printf("%x\n", arr[i]);//挨个打印数组
	}
}

在这里插入图片描述
如果中间的长度不指定
系统自动分配长度为1
就是1个0


void f38(void)
{
	//int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//这十个就是连续紧挨着存的
	int arr[] = { 0 };//这十个就是连续紧挨着存的
	printf("数组整个大小%d:\n", sizeof(arr));
	printf("arr[0]大小%d:\n", sizeof(arr[0]));
	printf("arr有几个?%d:\n", sizeof(arr)/sizeof(arr[0]));
	int n = sizeof(arr) / sizeof(arr[0]);//数组个数
	for (int i = 0; i < n; i++)
	{
		printf("%x\n", arr[i]);//挨个打印数组
	}
}

在这里插入图片描述


void f38(void)
{
	//int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//这十个就是连续紧挨着存的
	//int arr[10] = { 0 };//这十个就是连续紧挨着存的
	//int arr[] = {  };//这十个就是连续紧挨着存的
	int arr[10];
	arr[0] = 1;//那其他的呢?
	printf("数组整个大小%d:\n", sizeof(arr));
	printf("arr[0]大小%d:\n", sizeof(arr[0]));
	printf("arr有几个?%d:\n", sizeof(arr)/sizeof(arr[0]));
	int n = sizeof(arr) / sizeof(arr[0]);//数组个数
	for (int i = 0; i < n; i++)
	{
		printf("%x\n", arr[i]);//挨个打印数组
	}
}

在这里插入图片描述
其他的没有初始化,随机的

在这里插入图片描述

数组逆序

这算法中超级简单的弱智代码了
不就是交换吗
swap
在这里插入图片描述

整个临时空间tmp,把0位置放过去,然后把0位置跟N-1位置交换

然后把tmp放入N-1位置
这不就完成了两头交换
然后同时往中间推进,继续交就行。


void f39(void)
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//这十个就是连续紧挨着存的
	int n = sizeof(arr) / sizeof(arr[0]);//数组个数
	for (int i = 0; i < n; i++)
	{
		printf("%d\n", arr[i]);//挨个打印数组
	}

	printf("交换之后\n");//挨个打印数组
	//逆序
	for (int i=0,j = n - 1; i <= n / 2; i++, j--)
	{
		//只需要逆转一半
		int tmp = arr[i];
		arr[i] = arr[j];
		arr[j] = tmp;//交换
	}
	//再整体打印
	for (int i = 0; i < n; i++)
	{
		printf("%d\n", arr[i]);//挨个打印数组
	}
}

int main(void)
{
	f39();

	system("pause");
	return 0;
}

在这里插入图片描述


总结

提示:重要经验:

1)
2)学好c++,即使经济寒冬,手握10个大厂offer绝对不是问题!
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

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

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

相关文章

一文讲解系统性能分析之|iowait是什么?

我们对系统性能进行优化时&#xff0c;一般会使用 top 命令来查看系统负载和系统中各个进程的运行情况&#xff0c;从而找出影响系统性能的因素。如下图所示&#xff1a; top top 命令会输出很多系统相关的信息&#xff0c;如&#xff1a;系统负载、系统中的进程数、CPU使用率…

联诚发携多款创新产品及解决方案惊艳亮相ISLE 2023展!

这里写自定义目录标题4月7日-9日&#xff0c;ISLE 2023国际智慧显示及系统集成展览会在深圳国际会展中心&#xff08;宝安新馆&#xff09;隆重举行。来自全球各地1000余家企业参与展出&#xff0c;展出面积达8万㎡&#xff0c;吸引了众多业内专家、企业家以及广大观众前来观看…

《攻防演练》在没有基础安全能力的情况下如何做好蓝队防守

目的&#xff1a; 1、净化企业或机构的网络环境、强化网络安全意识&#xff1b; 2、防攻击、防破坏、防泄密、防重大网络安全故障&#xff1b; 3、检验企业关键基础设施的安全防护能力&#xff1b; 4、提升关键基础设施的网络安全防范能力和水平。 现状&#xff1a; 那么问…

什么是 prompts, completions, and tokens

从字面上看&#xff0c;任何文本都可以用作提示(prompts)——输入一些文本然后得到一些文本。 我们虽然知道 GPT-3 对随机字符串的处理很有趣&#xff0c;但是编写一个有效的提示才能更好的真正的让GPT理解我们要它做什么。 提示&#xff08;prompts&#xff09; Prompt是怎么…

DHTMLX Gantt入门使用教程【引入】:如何开始使用 dhtmlxGantt

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的大部分开发需求&#xff0c;具备完善的甘特图图表库&#xff0c;功能强大&#xff0c;价格便宜&#xff0c;提供丰富而灵活的JavaScript API接口&#xff0c;与各种服务器端技术&am…

vue3插槽的使用

插槽就是子组件中的提供给父组件使用的一个占位符&#xff0c;用 表示&#xff0c;父组件可以在这个占位符中填充任何模板代码&#xff0c;如 HTML、组件等&#xff0c;填充的内容会替换子组件的标签。 1.插槽基本使用 子组件SlotComponent.vue <template><div cla…

Salesforce Admin管理员中文学习教程_如何高效筛选出具有Admin权限的用户!

组织中最常见的错误之一就是拥有太多具有系统管理员简档的用户。不幸的是&#xff0c;这在某些行业中非常普遍。 实际上这存在着很大的潜在风险。拥有这些权限的用户可能会暴露、窃取或删除组织中的数据&#xff0c;甚至影响到其他用户。防止过多的管理员访问权限是保护Salesf…

CSDN博客写作编辑器如何使用?

文章目录0.引言1.快捷键2.文字3.链接和代码4.注脚和注释5.公式6.表7.图0.引言 笔者阅读CSDN博客已有五年&#xff0c;从最初的学习跟随者&#xff0c;到现在的CSDN博客创造者&#xff0c;这其中的转变来源于自身发展的思考&#xff0c;有学的输入&#xff0c;又有创作的输出&am…

GPT关键词挖掘,自动关键词文章生成

随着互联网的发展&#xff0c;内容营销已成为企业营销策略中不可或缺的一环。有效的关键词文章生成可以帮助企业吸引更多的潜在客户&#xff0c;提高品牌曝光度和转化率&#xff0c;从而实现营销目标。 关键词文章生成是指根据特定的关键词和主题&#xff0c;使用软件工具自动生…

计算机的工作原理

文章目录前言一、计算机组成二、工作原理1.首先指令输入——由鼠标/键盘完成&#xff1a;2.计算机对指令/输出的处理——由CPU完成&#xff1a;3.计算机对信息的储存——由内存、磁盘完成&#xff1a;4.计算机输出信息——由显卡、显示器完成&#xff1b;总结前言 电脑最直白、…

剪枝与重参第五课:前置知识

目录前置知识前言1.CIFAR10数据集1.1 简介1.2 数据集的获取1.3 数据集的加载2.VGG网络搭建2.1 VGGNet2.2 VGG网络实现3.Batch Normalize3.1 简介3.2 BN层实现4.L1&L2正则4.1 L1正则化(Lasso回归)4.2 L2正则化(岭回归)4.3 思考5.train5.1 parse_opt5.2 train5.3 test5.4 sav…

基于Amazon S3的通用封装oss-spring-boot-starter,支持前端分片直传

前段时间使用minio-java封装了一个 minio-spring-boot-starter&#xff0c;但是有局限性&#xff0c;不能很好的支持各个云服务厂商的OSS服务&#xff0c;为此&#xff0c;利用 aws-java-sdk-s3 做一个统一的封装&#xff0c;兼容S3 协议的通用文件存储工具类 &#xff0c;支持…

打造高效的跑腿配送系统,分享源码与经验

打造高效的跑腿配送系统&#xff0c;则是每一个快递公司和物流企业所追求的目标。在这篇文章中&#xff0c;我们将分享一些跑腿配送系统源码的技术解析、跑腿系统骑手端、商家端的优点以及跑腿配送相关的功能点介绍。 一、跑腿配送系统源码的技术解析 跑腿配送系统源码主要采…

1679_电子生产中的治具了解

全部学习汇总&#xff1a; GreyZhang/g_hardware_basic: You should learn some hardware design knowledge in case hardware engineer would ask you to prove your software is right when their hardware design is wrong! (github.com) 工作中切换了一下角色&#xff0c;做…

安装pyinstaller打包EXE

安装pyinstaller pycharm 左下角&#xff0c;打开包管理器 左上角输入要搜索的包 右上角点击安装 安装完后在 File - Settings - Projecxt:XXX 中设置 Python Interpreter 设置系统环境变量 打包时报错&#xff1a;找不到pyinstaller命令 pyinstaller : 无法将“pyinstal…

自动控制原理模拟卷4

自动控制原理模拟题四 Question1 仓库大门自动开闭控制系统原理图如下图所示,说明系统自动控制大门开闭的工作原理并画出系统方块图; 解: 当合上开门开关时,电位器桥式测量电路产生一个偏差电信号;此偏差电压经放大器放大后,驱动伺服电动机带动绞盘转动,使大门提起;与…

五、Locust之HTTP用户类

HttpUser是最常用的用户。它增加了一个客户端属性&#xff0c;用来进行HTTP请求。 from locust import HttpUser, task, betweenclass MyUser(HttpUser):wait_time between(5, 15)task(4)def index(self):self.client.get("/")task(1)def about(self):self.client.…

Python标准库 --- json库

目录 一、简介 二、属性 三、数据格式 一、简介 Json&#xff0c;全称JavaScript Object Notation&#xff0c;也就是JavaScript对象标记&#xff0c;通过对象和数组的组合表示数据&#xff0c;虽然构造简洁但是结构化程度非常高&#xff0c;是一种轻量级的数据交换格式。J…

ftp-vsftpd(Centos)

一.关闭selinux跟防火墙 setenforce 0 systemctl stop firewalld 二.安装vsftpd yum install vsftpd -y 三.创建虚拟用户与目录并申请证书 mkdir /webdata 根目录 chmod 777 /webdata/ useradd webadmin 上传的文件映射为webadmin vim user webuser虚拟用户 通过d…

Android---内存泄漏检测核心原理

目录 LeakCanary 核心原理 LeakCanary 检测对象的类型 ReferenceQueue 与 WeakReference LeakCanary 里的监控列表与保留列表 常见内存泄漏案例 1. 单例导致内存泄漏 2. 静态变量导致内存泄漏 3. 非静态内部类导致内存泄漏 4. 未取消注册或回调导致内存泄漏 5. Timer…