C语言 数组——数组的定义和初始化

目录

为什么使用数组(Array)?

一维数组的定义

一维数组的初始化

一维数组元素的访问

一维数组元素的赋值

数组的逻辑存储结构

数组的物理存储结构

二维数组的定义和初始化


为什么使用数组(Array)?

一维数组的定义

一维 数组的定义
int a[10];
定义一个有 10 int 型元素的一维数组
在内存中分配连续的存储空间给此数组
为什么数组下标从 0 开始?
使编译器的实现简化一点,且下标的运算速度少量提高
问题:如果希望下标从 1 10 而非从 0 9 ,怎么办?
int a[ 11 ];
int a[ n ];
最好用宏定义
# define N 10
int a[ N ];
# define N 11
int a[ N ];
数组的 数据类型 ——每一元素占内存空间的字节数
数组的 存储类型 ——内存的动态、静态存储区或 CPU 的寄存器
一维数组在内存中占用的字节数为:数组长度× sizeof (基类型)

一维数组的初始化

未初始化的数组元素值是什么?
静态 数组和 全局 数组自动初始化为0值,否则,是随机数
一维数组的初始化
int a[5] = {62, 74, 56, 88, 90};
int a[5] = {62, 74}; int a[5] = {62, 74, 0, 0, 0};
int a[ ] = {62, 74, 56, 88, 90};
更高效的数组初始化方法
memset (a, 0, sizeof(a));
sizeof(a) 来获得数组 a 所占的内存字节数
#include <string.h>

一维数组元素的访问

int a[5] = {62, 74, 56, 88, 90};
一维数组的引用
数组名[ 下标 ]
允许快速随机访问
引用时下标允许是 int 型变量或表达式
62 74 56 88  a[i]

一维数组元素的赋值

问题:如何使两个数组的值相等?
int a[4] = {1,2,3,4};
int b[4];
b = a;
方法2:通过循环语句赋值
int i;
for (i=0; i<4; i++)
{
b[i] = a[i];
}
方法1:逐个元素赋值
b[0]=a[0];
b[1]=a[1];
b[2]=a[2];
b[3]=a[3];
更高效的数组赋值方法
memcpy (b, a, sizeof(a));
数组 a 复制给数组 b
#include <string.h>

数组的逻辑存储结构

一维数组: int a[5];
用一个下标确定元素位置
二维数组 int b[2][3];
用两个下标确定元素位置

数组的物理存储结构

二维数组的定义和初始化

int a[ ][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
int a[ ][4] = {{1,2,3},{4,5},{6}};
int a[3][4] = {{1,2,3,0},{4,5,0,0},{6,0,0,0}};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

破解微信校验难题,Xinstall助你轻松实现Universal Link功能!

在移动互联网时代&#xff0c;App的推广和运营离不开各种技术手段的支持。其中&#xff0c;Universal Link作为连接App和网页的重要桥梁&#xff0c;被广大开发者所青睐。然而&#xff0c;很多开发者在使用Universal Link时遇到了微信校验不通过的问题&#xff0c;这不仅影响了…

堆排序和Topk问题

堆排序 堆排序即利用堆的思想来进行排序&#xff0c; 总共分为两个步骤&#xff1a; 1. 建堆 升序&#xff1a;建大堆&#xff1b; 降序&#xff1a;建小堆 2 .利用堆删除思想来进行排序 利用堆删除思想来进行排序 建堆和堆删除中都用到了向下调整&#xff0c;因此掌握了…

Go 错误日志处理

是不是所有的 if err ! nil 的地方都应该输出错误日志&#xff1f; 打印过多的错误日志会导致日志文件变得冗长和难以阅读。 其次&#xff0c;重复的错误信息会增加冗余。 此外&#xff0c;每一层都打印错误日志&#xff0c;一旦错误信息设计不当&#xff0c;可能会导致上下…

VCRUNTIME140_1.dll丢失是怎么回事?vcruntime140_1.dll无法继续执行代码的处理方法

VCRUNTIME140_1.dll丢失是怎么回事&#xff1f;问出这样的问题的人&#xff0c;一般是遇到vcruntime140_1.dll无法继续执行代码的问题了&#xff0c;找不到VCRUNTIME140_1.dll文件&#xff0c;那么程序就肯定是启动不了的&#xff0c;程序的启动是需要VCRUNTIME140_1.dll文件的…

全局数据 与 singleton 类的选择

1&#xff0c;singleton 相对于全局数据的优势 使用 Singleton 类相对于全局数据具有以下好处&#xff1a; 1.1. 延迟初始化&#xff1a;Singleton 类可以实现延迟初始化&#xff0c;即在需要时才创建实例&#xff0c;而全局数据在程序启动时就会被初始化。这可以节省资源并提…

设计软件有哪些?建模和造型工具篇(3),渲染100邀请码1a12

这次我们接着介绍建模工具。 1、FloorGenerator FloorGenerator是由CG-Source开发的3ds Max插件&#xff0c;用于快速创建各种类型的地板和瓷砖。该插件提供了丰富的地板样式和布局选项&#xff0c;用户可以根据需要轻松创建木质地板、石板地板、砖瓦地板等不同风格的地面。F…

【常用的队列总结】

文章目录 队列的介绍Queue队列的基本概念与操作队列的基本概念 常见的队列介绍非阻塞队列LinkedList:ArrayDeque:PriorityQueue: 阻塞队列ArrayBlockingQueueLinkedBlockingQueuePriorityBlockingQueue DelayQueueSynchronousQueue 队列的介绍 Queue队列的基本概念与操作 在 …

使用html2canvas和jspdf导出pdf包含跨页以及页脚

首先要下载两个文件&#xff0c;一个为html2canvas.min.js&#xff0c;另一个是jspdf.umd.min.js这两个文件分别下载的地址我也附录上&#xff0c;都在官网git&#xff1a; html2canvas.min.js: https://html2canvas.hertzen.com/dist/html2canvas.min.js jspdf.umd.min.js: …

Docker 快速搭建 MongoDB 4.x 集群(一主一从)

目录 1. 生成 mongo-file2. 启动主节点3. 启动从节点4. 配置副本集5. 注意事项 环境&#xff1a;MongoDB 4.0.25&#xff0c;Alma Linux&#xff08;建议使用 Linux&#xff09; 部署的时候是在同一个及其上操作的&#xff0c;实际可以放在不同机器上。 截止到 2024年05月&…

OceanBase数据库诊断调优,与高可用架构——【DBA从入门到实践】第八期

在学习了《DBA从入门到实践》的前几期课程后&#xff0c;大家对OceanBase的安装部署、日常运维、数据迁移以及业务开发等方面应当已经有了全面的认识。若在实际应用中遇到任何疑问或挑战&#xff0c;欢迎您在OceanBase社区问答论坛中交流、讨论。此次&#xff0c;《DBA从入门到…

如何学到数据库从入门到入土(MySQL篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人能接…

以太坊现货ETF获批:引发ETH价格暴涨,市场热议达到高潮

2024年5月24日&#xff0c;北京时间&#xff0c;以太坊现货ETF正式获得美国证券交易委员会&#xff08;SEC&#xff09;的批准&#xff0c;成为继比特币之后&#xff0c;美国主权政府承认的又一加密货币基金产品。这一意外的利好消息引发了加密货币市场的狂欢&#xff0c;以太坊…

阳光电源临摹品引发的EMC正向设计思考

画画可以临摹。画电路板临摹的人更多。 抄板&#xff0c;抄的是过去的板子&#xff0c;容易出问题。现在市场竞争激烈&#xff0c;欧美客户对出口产品的标准要求推陈出新&#xff0c;防不胜防。由于市场的竞争&#xff0c;欧洲客户已经意识到EMC电磁兼容的重要性&#xff0c;不…

【PID算法详解】

PID算法 PID算法介绍用途pid数学表达式及其含义P算法D算法I算法 PID总结数学公式转换代码设计实际运用PID代码实现 PID算法介绍 PID控制器是一种广泛应用于工业控制系统的反馈控制器&#xff0c;它通过比例&#xff08;Proportional&#xff09;、积分&#xff08;Integral&am…

LeetCode450删除二叉搜索树中的节点

题目描述 给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。返回二叉搜索树&#xff08;有可能被更新&#xff09;的根节点的引用。一般来说&#xff0c;删除节点可分为两个步骤&#xff1…

合约的值类型

基本数据类型&#xff1a;整数、枚举、布尔&#xff08;类似java的数据类型&#xff09;Address、Contract&#xff08;这两种是solidity特有的数据类型&#xff09;Fixed byte array&#xff08;定长字节数组&#xff09; Integer(int/uint) int/uint 以8位字节递增&#xf…

代码随想录算法训练营Day2|977.有序数组的平方、59.螺旋矩阵||、 209.长度最小的子数组

977.有序数组的平方 这道题给出的原数组有两个特点&#xff1a; 1、由小到大 2、有负数有正数 因此&#xff0c;这个数组平方后的数应该是从两头向中间的0减小的&#xff0c;但是两头的大小需要我们用两个指针便历之后去判断大小。在遍历的同时left指针向右走&#xff0c;righ…

Spring使用的设计模式

Spring 框架是一个广泛使用的 Java 框架&#xff0c;它内部使用了多种设计模式来简化开发过程、提高代码的可维护性和扩展性。 以下是一些在 Spring 框架中常见的设计模式&#xff0c;以及用代码示例来解释它们&#xff1a; 一、工厂模式&#xff08;Factory Pattern&#xff…

DIYGW UniApp可视化开发工具:前端开发人员的新宠

在前端开发的领域中&#xff0c;API接口的测试与调试一直是开发人员面临的挑战之一。传统的测试工具虽然能够完成基本的测试任务&#xff0c;但在效率、易用性和直观性方面仍有提升的空间。随着技术的发展&#xff0c;DIYGW UniApp可视化工具应运而生&#xff0c;为开发人员提供…

智慧园区:打造未来城市的新模式

随着城市化进程的加速和科技创新的推动&#xff0c;城市面临着诸多挑战和机遇。如何提升城市的竞争力和可持续性&#xff0c;是一个亟待解决的问题。在这个背景下&#xff0c;智慧园区作为一种新型的城市发展模式&#xff0c;引起了越来越多的关注和探索。 什么是智慧园区&…