C语言(15)-------------->一维数组

这篇文章介绍的是数组的定义、创建、初始化、使用,在数组中输入内容并输出数组中的内容,并探讨了数组在内存中的存储。里面有些内容建议大家参考下面的一些文章,有助于加深大家对于C语言的理解:

C语言(2)------->数据类型介绍  CSDN

C语言(3)-------->变量   CSDN 

C语言(5)--------->printf函数  CSDN

C语言(6)------->scanf函数   CSDN

C语言(12)--------->for循环   CSDN

一、一维数组的定义

我们学习过变量,变量通常是用于存储某一个数据类型。例如,我们要表示一个人的年龄如何定义呢?年龄是一个整数,我们可以使用int型给它存储起来,例如这样:

int age;

在生活中,只存储一个数字的情况其实是非常少的。例如,一个班级里面有50个人,我们要存储这个班级的数学成绩,用什么去存储呢?这时候就要使用到数组了。

那什么是数组呢?C语言规定,一组相同类型的元素的组合就是数组。

二、一维数组的创建

在C语言中,数组的语法是怎样的呢?

 数据类型 数组名[]

注意:[]里面放的内容是数字,这个数字是正整数。例如,要放10个数字,我们可以在[]里面填10。(当然填10以上的数字也是可以的

 我们看一组数据:

1 2 3 4 5 6 7 8 9 10 

上面都是整数,那我们就可以使用整型数组来存储它们。

int Grade[10];

数组里面存的值我们就称为数组元素。

使用数组时,可以根据我们的需要去设计。

例如,我们要存放26个字母。我们怎么使用数组呢?

 分析:

字母是字符类型,那我们的数据类型就使用的是char类型。

有26个字母,那么[]里面的数字就是26。

所以,它的创建方式是这样:

char letter[26];//letter的中文就是字母

 三、一维数组的初始化

一维数组的初始化有两种形式,完全初始化、不完全初始化。

在初始化之前,我给大家复习一下变量的初始化。

int age;//定义一个整型变量
int Grade = 100;//定义一个整型变量并将它初始化为100

初始化就是给这个变量一个数值。

3.1完全初始化

完全初始化就是将数组的大小全部填满。

例如:

int arr[6] = {1,2,3,4,5,6};

3.2不完全初始化

完全初始化就是将数组的大小填一部分。

int arr[6] = {1,2,3};

温馨提示: 

数组如果初始化了,可以省略数组的大小设定,因为编译器会根据数组初始化的内容来确定数组的真实大小。

int arr1[5] = {1,2,3,4,5};
int arr2[] = {1,2,3,4,5};

四、数组的类型

数组是自定义的数据类型。在C语言中,去掉数组名就是数组的类型。

例如:

int arr[10];

上面这个数组的数据类型就是去掉arr,也就是int [10]。

五、数组的使用

在C语言中,数组存放在内存中,这个章节先不深入探讨。

为了方便讲解,我们可以理解为一个数组中如果有10个元素,那这10个元素之间的关系好比宾馆中10间编号连着的房间,例如401 402 403  ......409 410。 

我们创建并初始化一个数组来来解释。

int arr[10] = {1,2,3,4,5,6,7,8,9,10};

1到10的关系好比下面的格子:

 

这十个数字好比十个人住在十个单间里面。每一个单间实际上都有一个编号。编号是从0开始的。

这十个数字是由十个下标组成的。我们如果要查找某一个数字查找它的下标就可以了。

那如果我们要找到7这个数字怎么办呢?我们知道它的编号是6,那么我们如何访问它呢?这个时候就要使用C语言中的一个操作符——下标引用操作符[]

参考代码:

#include <stdio.h>int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };printf("%d\n",arr[6]);return 0;
}

运行结果:

知道如何访问数组了,现在我们可以来一个练习。

一个数组中存放了1到10这10个整数,请将这10个整数打印出来。

参考代码:

#include <stdio.h>int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };int i = 0;for (i = 0; i < 10; i++){printf("%d ",arr[i]);}return 0;
}

运行结果:

六、将数据输入数组中,并取出数组的值

 我们知道数组的下标是从开始的,如果我们创建了1个数组大小为6的数组。那么下标是从0开始到5结束。

从一个大小为6的数组中输入数字,并且将它们打印在屏幕上如何实现呢?

分析:

1.开辟一个数组,数组中可以存放6个整数

2.输入数字

3.打印数字

参考代码:

#include <stdio.h>int main()
{//1.开辟一个数组,数组中可以存放6个整数int arr[6] = {0};int i = 0;//2.输入数字for (i = 0; i < 6; i++){scanf("%d",&arr[i]);}//打印数字for (i = 0; i < 6; i++){printf("%d ",arr[i]);}return 0;
}

运行结果:

 七、数组在内存中的存储

我们买回来一台电脑之后,电脑中有内存,内存的作用是什么呢?

计算机处理的数据都需要加载在内存中处理。

然而内存又会被划分为一个一个的内存单元。通常来说一个内存就是一个字节。通过编号可以找到内存单元。编号也称为地址,在C语言中地址就是指针。

占位符%p用于表示指针的占位,指针就是地址。如果我们要使用printf函数打印地址,可以使用%p这个占位符。

创建一个数组,这个数组里面可以存放10个数字,那我们怎么知道这十个数组的地址呢?

参考代码:

#include <stdio.h>int main()
{//1.开辟一个数组,数组中可以存放10个整数int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };int i = 0;//2.打印地址for (i = 0; i < 6; i++){printf("&arr[%d]=%p\n",i,&arr[i]);}return 0;
}

x64环境下运行结果:

x86环境下运行结果:

 

 我们可以看到,数组在内存中是连续存放的。随着下标的增加,地址是由小到大的。

 八、数组大小的计算

数组是有大小的,那我们如何去计算数组的大小呢?

这里就要使用到sizeof这个关键字去计算了。

sizeof用于计算变量或类型的长度。

sizeof我简单举个例子。对它感兴趣或者想要知道更多的用法可以参考我之前的博客:

C语言(2)------->数据类型介绍中的3.1sizeof操作符介绍 CSDN

(1)sizeof的使用

计算一个整型的大小:

代码:

#include <stdio.h>int main()
{int a = 10;printf("%d\n",sizeof(a));//计算a变量的大小printf("%d\n", sizeof(int));//计算整型的大小return 0;
}

运行结果:

我们知道一个整型所占的字节数是4。

(2)sizeof在数组中的使用

那么一个存放了10个整型的数组它的大小是多少呢?我们如何通过C语言去计算呢?

参考代码:

#include <stdio.h>int main()
{int arr[10] = {0};printf("%d\n", sizeof(int));//计算整型的大小printf("%d\n", sizeof(arr));return 0;
}

运行结果:

 这里我们可以看到计算的是数组的总大小。

(3)sizeof计算数组中的某个元素的大小

我们现在有一个存放了10个字母的数组,如果我要看第二个字符所占的大小,我们如何计算呢?(当然,这是一个常识问题,学过数据类型的都知道字符所占的字节数是1)

参考代码:

#include <stdio.h>int main()
{char arr[10] = { 0 };printf("%d\n", sizeof(char));//计算字符类型的大小printf("%d\n", sizeof(arr[1]));return 0;
}

运行结果:

(4)计算数组的大小 

参考代码:

#include <stdio.h>int main()
{int arr[] = { 1,2,3,4,5,6,7 };printf("%d\n", sizeof(arr));//计算数组的大小return 0;
}

运行结果:

(5)计算数组元素的个数 

参考代码:

#include <stdio.h>int main()
{int arr[7] = { 1,2,3,4,5,6,7 };printf("%d\n", sizeof(arr));//计算数组的大小printf("%d\n", sizeof(arr)/ sizeof(arr[0]));//计算数组的个数return 0;
}

运行结果:

 未定义数组大小可以计算出数组的大小:

参考代码:

#include <stdio.h>int main()
{int arr[] = { 1,2,3,4,5,6,7 };printf("%d\n", sizeof(arr));//计算数组的大小printf("%d\n", sizeof(arr)/ sizeof(arr[0]));//计算数组的个数return 0;
}

运行结果:

 

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

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

相关文章

AI学习第六天-python的基础使用-趣味图形

在 Python 编程学习过程中&#xff0c;turtle库是一个非常有趣且实用的工具&#xff0c;它可以帮助我们轻松绘制各种图形。结合for循环、random模块以及自定义方法等知识点&#xff0c;能够创作出丰富多彩的图案。下面就来分享一下相关的学习笔记。 一、基础知识点回顾 &…

线程安全问题

线程安全问题是指在多线程环境下&#xff0c;当多个线程同时访问共享资源时&#xff0c;可能出现的错误或不可预测的行为。以下是对其的理解&#xff1a; 1. 根本原因 线程安全问题的根本原因是多个线程对共享资源的并发访问。如果多个线程对共享资源进行读写操作&#xff0c…

ubuntu终端指令集 shell编程基础(一)

磁盘指令 连接与查看&#xff1a;磁盘与 Ubuntu 有两种连接方式&#xff1b;使用ls /dev/sd*查看是否连接成功&#xff0c;通过df系列指令查看磁盘使用信息。若 U 盘已挂载&#xff0c;相关操作可能失败&#xff0c;需用umount取消挂载。磁盘操作&#xff1a;使用sudo fdisk 磁…

第十四届蓝桥杯Scratch11月stema选拔赛真题——小猫照镜子

编程实现&#xff1a; 小猫照镜子。(背景非源素材) 具体要求&#xff1a; 1). 运行程序&#xff0c;角色、背景如图所示&#xff1b; 完整题目可点击下方链接查看&#xff0c;支持在线编程~ 小猫照镜子_scratch_少儿编程题库学习中心-嗨信奥https://www.hixinao.com/tiku/s…

Sublime Text4安装、汉化

-------------2025-02-22可用---------------------- 官方网址下载&#xff1a;https://www.sublimetext.com 打开https://hexed.it 点击打开文件找到软件安装目录下的 ctrlf 查找 8079 0500 0f94 c2右边启用替换替换为:c641 0501 b200 90点击替换按钮 替换完成后 另存为本地…

C++20的指定初始化器(Designated Initializers)

文章目录 指定初始化器的使用条件语法嵌套结构体的初始化数组的指定初始化注意事项优势 C20引入了**指定初始化器&#xff08;Designated Initializers&#xff09;**这一特性&#xff0c;允许在初始化结构体、联合体或类的对象时&#xff0c;明确指定成员变量的初始化值&#…

Redis安装及其AnotherRedisDesktopManagera安装使用

一、Redis安装 1. 下载Redis安装包 通过网盘分享的文件&#xff1a;Redis 链接: https://pan.baidu.com/s/1elAT8mk3EIoYQQ3WoVVoNg?pwd7yrz 提取码: 7yrz 2. 解压Redis安装包 下载完成后&#xff0c;将Redis安装包解压到一个指定的目录&#xff0c;例如&#xff1a;C:\Re…

51c嵌入式~电路~合集13

我自己的原文哦~ https://blog.51cto.com/whaosoft/12317946 一、造成PCB焊接缺陷的原因 电路板孔可焊性不好&#xff0c;将会产生虚焊缺陷&#xff0c;影响电路中元件的参数&#xff0c;导致多层板元器件和内层线导通不稳定&#xff0c;引起整个电路功能失效。 所谓可焊性…

Lindorm作为AI搜索基础设施,助力Kimi智能助手升级搜索体验

Kimi智能助手开启“长文本”时代&#xff0c;K系列强化学习模型持续进化中 2023年10月&#xff0c;月之暗面&#xff08;Moonshot AI&#xff09;旗下的Kimi智能助手&#xff0c;带着支持输入20万汉字的能力正式发布&#xff0c;提升了全球市场上产品化大模型服务支持的上下文输…

图数据库 | 24、如何进行正确性验证?

图数据库计算和查询结果的正确性&#xff0c;这个重要性当然是不言而喻的&#xff01; 老夫之前也写文章讲过&#xff0c;今天再手书一篇&#xff0c;旨在向大家系统地介绍一下图数据库查询与计算到底如何进行正确性验证&#xff01;&#xff01;&#xff01; 图数据库中的操…

【二分查找 图论】P8794 [蓝桥杯 2022 国 A] 环境治理|普及

本文涉及的基础知识点 本博文代码打包下载 C二分查找 C图论 [蓝桥杯 2022 国 A] 环境治理 题目描述 LQ 国拥有 n n n 个城市&#xff0c;从 0 0 0 到 n − 1 n - 1 n−1 编号&#xff0c;这 n n n 个城市两两之间都有且仅有一条双向道路连接&#xff0c;这意味着任意两…

vue写一个登录页面

目录 一、安装ui库二、路由跳转三、页面 一、安装ui库 element plus库 Element Plus 是 Element UI 的升级版本&#xff0c;专为 Vue 3.x 设计。它继承了 Element UI 的优秀特性&#xff0c;同时针对 Vue 3 的新特性&#xff08;如 Composition API、Teleport 等&#xff09;进…

和鲸科技携手四川气象,以 AI 的力量赋能四川气象一体化平台建设

气象领域与农业、能源、交通、环境科学等国计民生关键领域紧密相连&#xff0c;发挥着不可替代的重要作用。人工智能技术的迅猛发展&#xff0c;为气象领域突破困境带来了新的契机。AI 技术能够深度挖掘气象大数据中蕴含的复杂信息&#xff0c;助力人类更精准地把握自然规律&am…

Ubuntu下QT安装和调试的常见问题(一)__could_not_dertermine_which_make

前言 Ubuntu下QT的安装会有一些奇怪的问题出现&#xff0c;并没有像Windows下Visual Studio的安装那么直接就可以使用那么方便&#xff0c;本文就“make”挂接的问题&#xff0c;给出一些小的感受。 1、问题的提出 很多问题的解答&#xff0c;AI无论是上文心一言&#xff0c;还…

C# httpclient 和 Flurl.Http 的测试

关于C#调用接口或Post,Flurl封装了httpclient, CSDN有哥们提供了一个公网的测试网站&#xff0c;可以测试Post调用&#xff0c;我写了2个函数&#xff0c;测试httpclient和Flurl使用Post: async 和 await 是成对使用的&#xff0c;为了接受web异步返回的数据&#xff0c;winfor…

多通道数据采集和信号生成的模块化仪器如何重构飞机电子可靠性测试体系?

飞机的核心电子系统包括发电与配电系统&#xff0c;飞机内部所有设备和系统之间的内部数据通信系统&#xff0c;以及用于外部通信的射频设备。其他所有航空电子元件都依赖这些关键总线进行电力传输或数据通信。在本文中&#xff0c;我们将了解模块化仪器&#xff08;无论是PCIe…

Ollama部署本地大模型DeepSeek-R1-Distill-Llama-70B

文章目录 一、下模二、转模1. 下载转换工具2. 安装环境依赖3. llama.cpp1. 转换脚本依赖2. llama.cpp安装依赖包3. llama.cpp编译安装4. 格式转换 三、Ollama部署1. 安装启动Ollama2. 添加模型3. 测试运行 一、下模 #模型下载 from modelscope import snapshot_download model…

domain 网络安全 网络安全域

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 文章目录 1、域的概述 1.1、工作组与域1.2、域的特点1.3、域的组成1.4、域的部署概述1.5、活动目录1.6、组策略GPO 2、域的部署实验 2.1、建立局域网&#xf…

VSCode轻松调试运行.Net 8.0 Web API项目

1.背景 我一直都是用VS来开发.NetCore项目的&#xff0c;用的比较顺手&#xff0c;也习惯了。看其他技术文章有介绍VS Code更轻量&#xff0c;更方便。所以我专门花时间来使用VS Code&#xff0c;看看它是如何调试代码、如何运行.Net 8.0 WebAPI项目。这篇文章是一个记录的过程…

【fnOS飞牛云NAS本地部署DeepSeek-R1结合内网穿透远程访问告别服务器繁忙】

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…