C语言从头学28——数组(一)

一、基本概念
       数组是一组相同类型的值被顺序地储存在一起。数组表示方法为变量名加方括号,方括号里是数组的成员数量。例如:
       int arr[20];  //声明了一个 int 类型的名为 arr 包含20个成员的数组
       数组的成员是从0开始编号的,所以数组的编号永远小于成员数量,这也是遍历数组时循环条件用 "<" 而不用 "<=" 的原因。 数组名加方括号和指定编号,就可以像普通变量那样为其赋值或引用这个成员。例如:
       arr[10]=100;
       int x=2*arr[10];
       注意: 如果引用不存在的数组成员(即越界访问数组)写代码时并不会报错,有些在编译时会被发现,有些编译时也发现不了。使用数组越界是非常值得重视的问题。例如,接上面的例子:
        for(int i=0;i<=20;i++)
        {
            printf("%d",arr[i]); //当i=20时数组越界,这是很容易犯的错误
        }
       数组可以在声明时(仅在声明时),使用大括号同时对每一个成员赋值;数组声明后的赋值也称为数组的初始化。例如:
       int arr02[5] = {1,2,3,4,5}; //如赋值不足5个,剩余的会赋成0
      当我们声明成员数量大的数组时,为防止访问时出现莫名其妙的值,可以一次性全部赋值成0(初始化成0),做法如下:
       int arr03[1024]={0};
   如果我们在声明时即全部赋初值,可以省略"[ ]"中的成员数,编译器会自动补上。
       int arr04[]={6,7,8,9,10,11}; //可以正常编译
二、数组长度
       sizeof 是一个运算符(也可以理解成是函数),它可以返回数组的字节长度。返回的具体字节长度与数组的类型、成员个数及使用的系统相关。以int arr[20]为例:
       int a = sizeof(arr);  //以数组名为参数,返回整个数组的字节长度
       int b = sizeof(arr[0]);  //以某一成员为参数,返回单个成员的字节长度
       int c = sizeof(arr) / sizeof(arr[0]); //可以计算出数组的成员个数
三、多维数组
       数组名称后带有多对中括号的数组称为多维数组。两对 "[ ]" 的是二维数组,三对 "[ ]" 的是三数组,依此类推。
       以二维数组为例:
       int arr[3][4]; //声明了一个3行4列的二维数组
      二维数组也可以用{ }赋初值,{ 0 }给所有成员赋初值0。在用{ }赋初值时,为了行列显示清楚,可以多加几对大括号。举例:
      int arr[3][4]={   {1,2,3,4},
                             {4,3,2,1},
                             {5,6,7,8}  };  //如把内部的三对大括号拿掉也不影响赋值,带上层次更清楚。
四、附上一个遍历二维数组并计算数组字节长度的小程序:

#include<stdio.h>
int main(void)
{
//a.声明数组并赋初值int arr[3][4] = { {1,2,3,4},{4,3,2,1},{5,6,7,8} };
//b.通过两重循环遍历二维数组for (int i = 0; i < 3; i++) //一般外层循环行(反过来也无所谓){for (int j = 0; j < 4; j++) //内层循环列{printf("   %d", arr[i][j]); //显示数组成员的值}printf("\n"); //显示一行结束时换行}
//c.计算数组字节长度等信息int sum = sizeof(arr);//返回整个数组字节总长度int a = (int)sizeof(arr) / sizeof(arr[0]); //返回数组行数int b = (int)sizeof(arr[0])/sizeof(arr[0][0]); //返回数组行数int c = (int)sizeof(arr) / sizeof(arr[0][0]); //返回数组成员数printf("数组总字节长%d  行%d 列%d 成员总数%d", sum,a,b,c);getchar();return 0;
}

//运行结果:
     1   2   3   4
     4   3   2   1
     5   6   7   8
     数组总字节长48  行3 列4 成员总数12
     实际上在计算机内部,二维数组的存储也是线性的没有行和列之分,一字排开,arr[0][0]是第一个,的后面是arr[0][1],接着arr[0][2],再后边arr[0][3]、arr[1][0]、arr[1][1]、......、直到arr[2][2]、arr[2][3]。推而广之,三维、四维也是一样。

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

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

相关文章

深入理解Symfony框架的环境配置策略

引言 Symfony是一个高度灵活的PHP框架&#xff0c;它允许开发者通过配置文件来定制应用程序的行为&#xff0c;以适应不同的运行环境。环境配置是Symfony中一个重要的概念&#xff0c;它允许开发者为开发、测试和生产环境设置不同的配置参数。本文将详细探讨Symfony的环境配置…

7-491 3名同学5门课程成绩,输出最好成绩及所在的行和列(二维数组作为函数的参数)

编程:数组存储3名同学5门课程成绩 输出最好成绩及所在的行和列 要求&#xff1a;将输入、查找和打印的功能编写成函数 并将二维数组通过指针参数传递的方式由主函数传递到子函数中 输入格式: 每行输入一个同学的5门课的成绩&#xff0c;每个成绩之间空一格&#xff0c;见输入…

互联网框架五层模型详解

注&#xff1a;机翻&#xff0c;未校对。 What is the Five Layers Model? The Framework of the Internet Explained 五层模型互联网框架解释 Computer Networks are a beautiful, amazing topic. Networks involve so much knowledge from different fields, from physics…

Elasticsearch架构基本原理

Elasticsearch的架构原理可以详细分为以下几个方面进行介绍&#xff1a; 一、Elasticsearch基本概念 Elasticsearch&#xff08;简称ES&#xff09;是一个基于Lucene构建的开源、分布式、RESTful搜索和分析引擎。它支持全文搜索、结构化搜索、半结构化搜索、数据分析、地理位…

[数据集][目标检测]城市街道井盖破损未盖丢失检测数据集VOC+YOLO格式4404张5类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;4404 标注数量(xml文件个数)&#xff1a;4404 标注数量(txt文件个数)&#xff1a;4404 标注…

note-网络是怎样连接的6 请求到达服务器,响应返回浏览器

助记提要 服务器程序的结构套接字的指代方式MAC模块的接收过程IP模块的接收过程TCP模块处理连接包TCP模块处理数据包TCP模块的断开操作URI转换为实际文件路径URI调用程序Web服务器访问控制响应内容的类型 6章 请求到达服务器&#xff0c;响应返回浏览器 1 服务器概览 在数据…

昇思25天学习打卡营第03天 | 张量 Tensor

昇思25天学习打卡营第03天 | 张量 Tensor 文章目录 昇思25天学习打卡营第03天 | 张量 Tensor张量张量的创建张量的属性Tensor与NumPy转换稀疏张量CSRTensorCOOTensor 总结打卡 张量 张量&#xff08;Tensor&#xff09;是一种类似于数组和矩阵的特殊数据结构&#xff0c;是神经…

MATLAB|更改绘图窗口的大小和位置

MATLAB绘图 plot、plot3、cdfplot都适用 效果 如下图&#xff0c;运行程序后可以直接得到这两个绘图窗口。 右上角的Figure1是原始图片&#xff0c;右下角的Figure2是调整了位置和大小后的绘图窗口。 完整源代码 % 绘图大小和位置调整 % Evand©2024 % 2024-7-1/Ver1…

Transformer模型原理细节解析

基本原理: Transformer 的核心概念是 自注意力机制(Self-Attention Mechanism),它允许模型在处理每个输入时“关注”输入序列的不同部分。这种机制让模型能够理解每个单词或符号与其他单词或符号之间的关系,而不是逐个地线性处理输入。 Transformer 主要由两个部分组成:…

手把手教你搭建PyTorch环境:MindStudio中PyTorch模型开发实战

本次实验的视频链接如下&#xff1a;​https://www.bilibili.com/video/BV1iA4y1f7o1/ 本次实验在MindStudio上进行&#xff0c;请先按照 教程 配置环境,安装MindStudio。 ​ MindStudio的是一套基于华为自研昇腾AI处理器开发的AI全栈开发工具平台&#xff0c;该IDE上功能很多…

Boost 智能指针

scoped_ptr 不能被复制或赋值给其他 scoped_ptr 对象,不能与其他指针比较 (除了 nullptr) scoped_ptr 用例 template <typename T> class scoped_ptr {public:// 构造函数:初始化 scoped_ptr 并接管指针的所有权explicit scoped_ptr(T* ptr = nullptr) : ptr_(ptr) …

Flink CDC的使用

MySQL数据准备 create database if not exists test; use test; drop table if exists stu; create table stu (id int primary key auto_increment, name varchar(100), age int); insert into stu(name, age) values("张三",18); insert into stu(name, age) valu…

ESOP 系统助力电子设备公司的管理模式升级

在科技飞速发展的时代&#xff0c;电子设备行业竞争愈发激烈&#xff0c;企业要想在市场中立足并持续发展&#xff0c;不断升级管理模式成为关键。ESOP系统的引入&#xff0c;为电子设备公司带来了全新的机遇&#xff0c;有力地推动了管理模式的升级。 ESOP 系统首先为电子设备…

element el-table表格切换分页保留分页数据+限制多选数量

el-table表格并没有相关的方法来禁用表头里面的多选按钮 那么我们可以另辟蹊径&#xff0c;来实现相同的多选切换分页&#xff08;保留分页数据&#xff09; 限制多选数量的效果 <el-table:data"tableData"style"width: 100%">// 不使用el-talbe自带…

农村程序员陈随易2024年中总结

今天是 2024年7月1日&#xff0c;时间如白驹过隙&#xff0c;今年已去其一半。 总结一下今年上半年的情况&#xff0c;给大家提供一些参考和建议。 希望大家关注一下公众号 陈随易&#xff0c;有些内容只在公众号发表。 先看看我的年初计划&#xff0c;这个在今年年初的时候&…

泛微E9开发 限制明细表列的值重复

限制明细表列的值重复 1、需求说明2、实现方法3、扩展知识点3.1 修改单个字段值&#xff08;不支持附件类型&#xff09;3.1.1 格式3.1.2 参数3.1.3 案例 3.2 获取明细行所有行标示3.2.1 格式3.2.2 参数说明 1、需求说明 限制明细表的“类型”字段&#xff0c;在同一个流程表单…

【全网首发】双字重叠语序验证码识别

【省流&#xff1a;打算直接测试效果的可以访问这个网址】 http://decaptcha.ai?project_namenetease_zh_overlap 【实现方案】 如图所示&#xff0c;我们能看到&#xff0c;比起以往的“单个字”语序点选&#xff0c;这个验证码的难点在于“重叠汉字“&#xff0c;我们知道…

【Python机器学习】模型评估与改进——简单的网格搜索

为了提升模型的泛化性能&#xff0c;我们可以通过调参来实现。 在尝试调参之前&#xff0c;重要的是理解参数的含义&#xff0c;找到一个模型的重要参数&#xff08;提供最佳泛化性能的参数&#xff09;的取值是一项棘手的任务&#xff0c;但对于几乎所有模型和数据集来说都是…

API-Window对象

学习目标&#xff1a; 掌握Window对象 学习内容&#xff1a; BOM&#xff08;浏览器对象模型&#xff09;定时器-延时函数JS执行机制location对象navigation对象history对象 BOM&#xff08;浏览器对象模型&#xff09;&#xff1a; BOM是浏览器对象模型。 window对象是一个全…

Windows 11的市场份额越来越大了,推荐你升级!

7月1日&#xff0c;系统之家发布最新数据&#xff0c;显示Windows 11操作系统的市场份额正在稳步上升。自2021年10月Windows 11发布以来&#xff0c;Windows 10一直占据着市场主导地位&#xff0c;当时其市场份额高达81.44%。然而&#xff0c;随着时间的推移&#xff0c;Window…