23. 一维数组

写在前面:

今天是2023年12月31日,也是整个2023年的最后一天。我在CSDN上只有短短几个月的时光,但非常感谢大家的支持,作为一名刚刚大一的大学生呢,学习编程,学习写博客是很重要的事,所以在新的一年里,我会更加的努力。

明年的计划是把C语言先学完,然后入手ROS和人工智能领域,希望目标能一点一点实现。

大家元旦快乐!


数组的定义

就是存放一组数,一组相同类型元素的集合

一维数组的创建方式:

type_t arr_name [const_n]

type_t是数组的元素类型

const_n是一个常量表达式,指定数组的大小

#include<stdio.h>
int main()
{int arr[8];  //数组的创建char ch[5];    //ch为数组名,不一定必须是arr  //[]内的值必须是常量表达式,不能是变量return 0;
}

#在C99中有变长数组这个概念,可以存放变量,但尽量不用

数组的初始化

int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };  //完全初始化
int arr1[10] = { 0,1,2,3,4,5 };   //不完全初始化int arr2[] = { 0,1,2,3,4,5,6,7,8,9 };  //arr[10],与arr2[]等价
char arr2[5] = { 's','u','g','a','r' };
char arr3[4] = "car";  //这里字符串的最后会有一个隐藏的'\0'元素,所以共4个元素

如果不规定数组的大小,则初始化时有几个元素,数组的大小就是多少

char ch1[] = "sugar";
char ch2[] = { 's', 'u', 'g','a','r' };

当我们打印这两个数组时,会发现不一样:

打印的方法是到'\0' 之前截至。ch1是字符串,最后自带一个'\0';而ch2是单一字符,打印时会把内存中sugar之后的内容打印出来直到出现'\0'才停止,所以会出现乱码。

一维数组的使用

*数组中元素的下标是从0开始的,所以如果有n个元素,则第一个元素的下标是0,最后一个元素的下标是n-1

[ ] -下标引用操作

arr[4]; //指数组中第5个元素!

改变数组中元素的值

int arr[10] = { 0 };
arr[4] = 5;
printf("%d\n", arr[4]);

打印出所有元素要用循环

int arr[10] = { 0 };
arr[4] = 5;int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i < sz; i++)
{printf("%d ", arr[i]);
}
return 0;

结果如下:除了第5个元素是5,其他全是0

sizeof(arr)是数组的总长度,sizeof(arr[0])是第一个元素的长度,相除得到的是该数组的元素个数(这种方法要记住,当我们不知道数组中元素个数时,可用此方法求解。

一维数组在内存中中的存储

我们看下数组在内存中的地址

int arr[10] = { 0 };
int i = 0;
for (i; i < 10; i++)
{printf("arr[%d] = %p\n", i, &arr[i]); //%p是打印地址,打印16进制位
}

观察每个地址的末位 (这里都是16进制,a=10,b=11,c=12,d=13,e=14,f=15,逢十六进一)8 与 c 之间差4,c 与 0 之间差4,每个地址都差4

所以说:

  1. 一维数组在内存中是连续存放的
  2. 随着数组下标的增长,地址是由低到高变化的

由此,我们可以通过指针来获取数组的元素

int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };int* p = arr;  //数组名是数组首元素的地址
int i = 0;
for (i = 0; i < 10; i++)
{printf("%d ", *p);p++;
}

用这种方式也可以将所有元素找到并打印

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

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

相关文章

翻页的电子画册如何制作

​在过去&#xff0c;一本精美的画册往往需要大量的人力物力去印刷、装帧、运输。而现在&#xff0c;只需一台电脑、一个网址和一个创意&#xff0c;就可以轻松制作出一本电子画册。这种变化不仅降低了成本&#xff0c;还带来了更多的便利性和灵活性。 首先&#xff0c;你需要选…

网络故障排查和流量分析利器-Tcpdump命令

Tcpdump是一个在Unix/Linux系统上广泛使用的命令行网络抓包工具。它能够捕获经过网络接口的数据包&#xff0c;并将其以可读的格式输出到终端或文件中。Tcpdump是一个强大的命令行工具&#xff0c;能够捕获和分析网络数据包&#xff0c;为网络管理员和安全专业人员提供了深入了…

【网络面试(6)】IP协议对网络包的转发

在前面的博客中&#xff0c;我们提到过&#xff0c;网络传输的报文是有真实的数据包和一些头部组成&#xff0c;目前我们了解的头部就有TCP头、IP头、MAC头&#xff0c;而且这三个头部信息都是在应用程序委托给协议栈之后&#xff0c;被写入的相关信息&#xff0c;这些头部都是…

Leetcode4-唯一元素的和(1748)

1、题目 &#xff08;1748&#xff09;给你一个整数数组 nums 。数组中唯一元素是那些只出现 恰好一次 的元素。 请你返回 nums 中唯一元素的 和 。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3,2] 输出&#xff1a;4 解释&#xff1a;唯一元素为 [1,3] &#xff0c;…

修改jenkins的目录(JENKINS_HOME)

默认JENKINS_HOME是/var/lib/jenkins/ 现要修改为/home/jenkins_data/jenkins 最开始 sudo cp -a /var/lib/jenkins/ /home/jenkins_data/ 然后如下操作&#xff1a; 1、首先 /etc/sysconfig/jenkins&#xff1a;jenkins配置文件&#xff0c;“端口”&#xff0c;“JENKIN…

9、python-闭包

简介 1.闭包&#xff0c;又称闭包函数或者闭合函数&#xff0c;其实和嵌套函数类似 2.不同之处在于&#xff0c;闭包中外部函数返回的不是一个具体的值&#xff0c;而是一个函数 3.一般情况下&#xff0c;返回的函数会赋值给一个变量&#xff0c;这个变量可以在后面被继续执行…

yolov8知识蒸馏代码详解:支持logit和feature-based蒸馏

文章目录 1. 知识蒸馏理论2. yolov8 蒸馏代码应用2.1 环境配置2.2 训练模型(1) 训练教师模型(2) 训练学生模型baseline(3) 蒸馏训练3. 知识蒸馏代码详解3.1 蒸馏参数设置3.2 蒸馏损失代码讲解3.2.1 Feature based loss3.2.1 Logit loss3.3 获取蒸馏的feature map及channels

08-接口文档管理工具-项目集成knife4j__ev

2、knife4j快速入门 2.1 knife4j介绍 knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望它能像一把匕首一样小巧,轻量,并且功能强悍! gitee地址&#xff1a;knife4j: Knife4j是一个集Swagger2 和 OpenAPI3为一体的增…

第二十六周:学习笔记

第二十六周&#xff1a;学习笔记 摘要Abstract全卷积网络 FCN1. CNN 与 FCN2. 全连接层 --> 成卷积层3. FCN的缺点 摘要 全卷积神经网络&#xff08;Fully Convolutional Network&#xff0c;FCN&#xff09;是一种用于图像分割和语义分割任务的深度学习模型。与传统的卷积…

使用python快速开发与PDF文档对话的Gemini聊天机器人

检索增强生成(Retrieval-augmented generation&#xff0c;RAG)使得我们可以让大型语言模型(LLMs)访问外部知识库数据(如pdf,word、text等)&#xff0c;从而让人们可以更加方便的通过LLM来学习外部数据的知识。今天我们将利用之前学习到的RAG方法&#xff0c;谷歌Gemini模型和l…

费曼学习法应用:谈自私和教育的引导

今天这个还是来源于我和九迁的对话&#xff0c;起因是中午吃饭的时候&#xff0c;九迁在学校与班主任老师和数学老师对话中带来的思考。 先听音频&#xff1a; 对话内容&#xff08;以下内容可以边听边看&#xff0c;属于语音转换过来的文字&#xff0c;最后有个总结&#xff0…

U4_3 语法分析-自底向上分析-LR0/LR1/SLR分析

文章目录 一、LR分析法1、概念2、流程3、LR分析器结构及分析表构造1&#xff09;结构2&#xff09;一些概念 二、LR(0)分析法1、流程2、分析动作1&#xff09;移近2&#xff09;归约(reduce) 3、总结1&#xff09;LR分析器2&#xff09;构造DFA3&#xff09;构造LR(0)的方法(三…

基于Vite创建简单Vue3工程

首先安装node.js环境&#xff0c;没有node.js环境&#xff0c;便没有npm命令。 1、Vue3创建执行命令 D:\TABLE\test>npm create vuelatestVue.js - The Progressive JavaScript Framework√ 请输入项目名称&#xff1a; ... vue_test √ 是否使用 TypeScript 语法&#xff…

UntiyShader(五)属性、内置文件和变量

目录 一、如何使用属性 例子 ShaderLab中的属性的类型和Cg中的变量的类型之间的匹配关系

网络安全-真实ip获取伪造与隐藏挖掘

目录 真实ip获取应用层网络层网络连接TOAproxy protocol ip伪造应用层网络层TOA攻击proxy protocol 隐藏代理 挖掘代理多地ping历史DNS解析记录国外主机解析域名网站RSS订阅网络空间搜索引擎 总结参考 本篇文章学习一下如何服务如何获取真实ip&#xff0c;隐藏自己的ip&#xf…

yolov8 tracking编码为web 和 rtsp流输出

1 基础工作 打开cmd 输入 conda env list 输入 conda activate py38 查看 nvidia-smi 查看 nvcc&#xff0c;如下图所示 cuda为11.7 &#xff0c;为确认可以查看program files 下面的cuda 安装&#xff0c;看到11.7 就行了&#xff0c;读者可以自行确认自己的版本。 查看nvid…

【基础】【Python网络爬虫】【2.请求与响应】常用请求报头和常用响应方法

Python网络爬虫基础 爬虫基础请求与相应HTTP/HTTPS 协议HTTP/HTTPS的优缺点HTTP 的缺点HTTPS的优点 请求与响应概述请求请求目标&#xff08;url&#xff09;请求体&#xff08;response&#xff09;常用的请求报头查看请求体&#xff08;requests 模块&#xff09; 响应HTTP响…

PS实现圆角矩形选取

在我们日常的工作当中,经常需要做圆角矩形的图片,因为圆角的图片给人的感觉比较圆润,漂亮,但是PS在这方面显然比较弱智,因此如何做圆角矩形选择,这里给出了两个方法,希望能帮到大家。 进入正题(方法一): 第一步-PS 右上角-打开一张图片 第二步-左列-选择矩形-选择目…

2024新年快乐

今天就不讲题解了&#xff0c;2024年&#xff0c;祝所有博客身体健康&#xff0c;粉丝越多&#xff0c;点赞越高&#xff01;&#xff01;&#xff01; #include<bits/stdc.h> using namespace std; int main(){cout<<"新年快乐!!";return 0&#xff1b;…

汽车信息安全--车规MCU信息安全设计应采用哪种安全架构?

目录 1.问题引入 2.常见网络安全架构简述 2.1 边界防御架构 2.2 纵深防御架构