网页设计与网站建设报告书/视频剪辑培训机构

网页设计与网站建设报告书,视频剪辑培训机构,建设摩托车是名牌吗,阿里巴巴怎么做企业网站宣传今天继续来浅浅推进一下C语言的复习,这次是数组的复习,话不多说,正文开始. 数组的概念 数组是⼀组相同类型元素的集合,一种自定义类型.数组中元素个数不能为0.数组分为⼀维数组和多维数组,多维数组⼀般⽐较多⻅的是⼆维数组. 下面从一维数组说起. 一维数组的创建和…

        今天继续来浅浅推进一下C语言的复习,这次是数组的复习,话不多说,正文开始.

数组的概念

        数组是⼀组相同类型元素的集合,一种自定义类型.数组中元素个数不能为0.数组分为⼀维数组和多维数组,多维数组⼀般⽐较多⻅的是⼆维数组.

        下面从一维数组说起.

一维数组的创建和初始化

  数组创建

        ⼀维数组创建的基本语法如下:(数组在创建的时候可以指定数组的大小和数组的元素类型).

type arr_name[常量值];

        1.type 指定的是数组中存放数据的类型,可以是: char、short、int、float 等,也可以自定义的类型

        2.arr_name 指的是数组名的名字

        3.[] 中的常量值是⽤来指定数组的大小的

  数组的初始化

        数组在创建的时候,我们需要给定⼀些初始值值,这种就称为初始化.数组的初始化⼀般使⽤⼤括号,将数据放在⼤括号中.

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>void Print(int arr[], int sz)
{for (int i = 0; i < sz; i++){printf("%d ", arr[i]);}printf("\n");
}
int main()
{//完全初始化int arr1[10] = { 1,2,3,4,5,6,7,8,9,0 };//不完全初始化:其余的会被默认初始化为0int arr2[10] = { 1,2 };//[]中不写,初始化为几个就是几个元素int arr3[] = { 1,2,3,4,5 };Print(arr1, 10);Print(arr2, 10);Print(arr3, sizeof(arr3)/sizeof(arr3[0]));return 0;
}

  数组的类型

        数组也是有类型的,数组算是⼀种⾃定义类型,去掉数组名留下的就是数组的类型.

int arr[10]的类型就是int [10];

char ch[5]的类型是 char [5];

一维数组的使用

        简单的了解了一维数组后,让我们复习一下它的使用.

  数组下标

        定数组是有下标的,下标是从0开始的,假设数组有n个元素,最后⼀个元素的下标是n-1.如下图:

        我们通常用下标引用符[ ]来访问数组元素.例如我们访问下标为7的元素,我们就可以使用arr[7].

  数组元素的打印和输入

        在上面初始化中为了看见初始化的结果,我已经将打印的代码先使用了.因为数组用下标访问,所以只要便利数组下标就可以打印数组了.

        数组的输入与打印类似,大概如下

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>void Print(int arr[], int sz)
{for (int i = 0; i < sz; i++){printf("%d ", arr[i]);}printf("\n");
}int main()
{int arr[10] = { 0 };for (int i = 0; i < 10; i++){scanf("%d", &arr[i]);}Print(arr, 10);return 0;
}

  一维数组在内存中的存储

        想要了解一维数组在内存中的存储最好的方法就是打印数组中每个元素的地址.代码和结果如下图.

        由上图输出结果可知,每两个元素之间都隔离四个字节,而一int类型就占四个类型.所以我们得出结论:数组在内存中是连续存放的.

  sizeof计算数组元素个数

        在遍历数组的时候,我们经常想知道数组的元素个数.在C语言中我们可以用sizeof来实现.

        sizeof中C语⾔是⼀个关键字,是可以计算类型或者变量大小的,(他的返回值是所计算类型或变量所占的字节数),其实 sizeof 也可以计算数组的大小.如下

int main()
{int arr[10] = { 0 };printf("%d\n", sizeof(arr));return 0;
}

        因为数组中所有元素的类型都是相同的,那只要计算出⼀个元素所占字节的个数,数组的元素个数就能算出来。这⾥我们选择第⼀个元素算大小就可以.然后二者相除就可以得出数组元素个数.

int main()
{int arr[10] = { 0 };int a = sizeof(arr) / sizeof(arr[0]);printf("%d\n", a);return 0;
}

        有了这个方法,以后在代码中需要数组元素个数的地⽅就不用固定写死了,使用上面的计算,不管数组怎么变化,计算出的大小也就随着变化了.

二维数组

  二维数组得概念

        前⾯学习的数组被称为⼀维数组,数组的元素都是内置类型的,如果我们把⼀维数组做为数组的元素,这时候就是二维数组⼆维数组作为数组元素的数组被称为三维数组二维数组以上的数组统称为多维数组.

  二维数组的创建和初始化

        二维数组的创建:

type arr_name[常量值1][常量值2];

常量值1表示二维数组有几行

常量值2表示二维数组有几列

type是元素类型

arr_name是数组名

        那⼆维数组如何初始化呢?像⼀维数组⼀样,也是使⽤⼤括号初始化的.

        不完全初始化

int main()
{//不完全初始化int arr1[3][5] = { 1,2,3,4,5 };for (int i = 0; i < 3; i++){for (int j = 0; j < 5; j++){printf("%d ", arr1[i][j]);}printf("\n");}printf("\n");//按照⾏初始化int arr2[3][5] = { {1,2},{3},{4,5} };for (int i = 0; i < 3; i++){for (int j = 0; j < 5; j++){printf("%d ", arr2[i][j]);}printf("\n");}return 0;
}

        输出结果

        完全初始化

int main()
{//完全初始化int arr1[2][5] = { 1,2,3,4,5,6,7,8,9,0};for (int i = 0; i < 2; i++){for (int j = 0; j < 5; j++){printf("%d ", arr1[i][j]);}printf("\n");}return 0;
}

        输出结果

        类似于一维数组,初始化时省略行,但是不能省略列

int main()
{int arr1[][5] = { 1,2,3,4,5,6 };for (int i = 0; i < 2; i++){for (int j = 0; j < 5; j++){printf("%d ", arr1[i][j]);}printf("\n");}return 0;
}

        输出结果

  二维数组的使用

        ⼆维数组访问也是使⽤下标的形式的,⼆维数组是有⾏和列的,只要锁定了⾏和列就能唯⼀锁定 数组中的⼀个元素.

        如上图,最右侧绿⾊的数字表示行号,第⼀⾏蓝⾊的数字表⽰列号,都是从0开始的,

        例如,我们说:第2行,第4列,快速就能定位出7.

  二维数组的输入和输出

        同样在上面为了观察初始化的结果,我已经使用了二维数组的输出,输入与输出类似.代码见下

int main()
{int arr[3][5] = { 1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7 };int i = 0;//输⼊for (i = 0; i < 3; i++) //产⽣⾏号{int j = 0;for (j = 0; j < 5; j++) //产⽣列号{scanf("%d", &arr[i][j]); }}//输出for (i = 0; i < 3; i++) //产⽣⾏号{int j = 0;for (j = 0; j < 5; j++) //产⽣列号{printf("%d ", arr[i][j]); }printf("\n");}return 0;
}

  二维数组在内存中的存储 

        像⼀维数组⼀样,如果想研究⼆维数组在内存中的存储⽅式,我们也是可以打印出数组所有元素的地址.结果如下

        从输出的结果来看,每⼀⾏内部的每个元素地址之间都相差4个字节,跨⾏位置处的两个元素(如:arr[0][4]和arr[1][0])之间也是差4个字节,所以⼆维数组中的每个元素都是连续存放的.如下图所示

        还有一点点为c99中的变长数组,了解即可~以上就是所有复习内容啦,下篇复习见~

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

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

相关文章

Canal 解析与 Spring Boot 整合实战

一、Canal 简介 1.1 Canal 是什么&#xff1f; Canal 是阿里巴巴开源的一款基于 MySQL 数据库增量日志解析&#xff08;Binlog&#xff09;中间件&#xff0c;它模拟 MySQL 的从机&#xff08;Slave&#xff09;行为&#xff0c;监听 MySQL 主机的二进制日志&#xff08;Binl…

暗光增强技术研究进展与产品落地综合分析(2023-2025)

一、引言 暗光增强技术作为计算机视觉与移动影像领域的核心研究方向之一,近年来在算法创新、硬件适配及产品落地方面取得了显著进展。本文从技术研究与产业应用两个维度,系统梳理近三年(2023-2025)该领域的关键突破,并对比分析主流手机厂商的影像技术优劣势。 二、暗光增…

多维array和多维视图std::mdspan

多维数组 这个特性用于访问多维数组&#xff0c;之前C operator[] 只支持访问单个下标&#xff0c;无法访问多维数组。 因此要访问多维数组&#xff0c;以前的方式是&#xff1a; 重载operator()&#xff0c;于是能够以m(1, 2) 来访问第1 行第2 个元素。但这种方式容易和函数…

利用AI让数据可视化

1. 从问卷星上下载一份答题结果。 序号用户ID提交答卷时间所用时间来源来源详情来自IP总分1、《中华人民共和国电子商务法》正式实施的时间是&#xff08;&#xff09;。2、&#xff08;&#xff09;可以判断企业在行业中所处的地位。3、&#xff08;&#xff09;是指店铺内有…

【第14节】windows sdk编程:进程与线程介绍

目录 一、进程与线程概述 1.1 进程查看 1.2 何为进程 1.3 进程的创建 1.4 进程创建实例 1.5 线程查看 1.6 何为线程 1.7 线程的创建 1.8 线程函数 1.9 线程实例 二、内核对象 2.1 何为内核对象 2.2 内核对象的公共特点 2.3 内核对象句柄 2.4 内核对象的跨进程访…

Python简单爬虫实践案例

学习目标 能够知道Web开发流程 能够掌握FastAPI实现访问多个指定网页 知道通过requests模块爬取图片 知道通过requests模块爬取GDP数据 能够用pyecharts实现饼图 能够知道logging日志的使用 一、基于FastAPI之Web站点开发 1、基于FastAPI搭建Web服务器 # 导入FastAPI模…

sass介绍

1、Sass简介 Sass 是一种 CSS 的预编译语言。它提供了 变量&#xff08;variables&#xff09;、嵌套&#xff08;nested rules&#xff09;、 混合&#xff08;mixins&#xff09;、 函数&#xff08;functions&#xff09;等功能&#xff0c;并且完全兼容 CSS 语法。Sass 能…

leetcode hot100(五)

11. 盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你…

Unity 云渲染本地部署方案

Unity Render Streaming 云渲染环境搭建 0.安装 Unity Render Streaming 实现原理: 服务器与客户端实现功能包括: 详细内容见官方文档&#xff1a; 官方文档: https://docs.unity3d.com/Packages/com.unity.renderstreaming3.1/manual/tutorial.html Unity 流送云渲染介绍: …

【java面型对象进阶】------继承实例

继承结构下的标准Javabean 代码如下&#xff1a; package demo10;//定义员工父类 public class Employee {private String id;private String name;private double salary;//构造方法public Employee(){}public Employee(String id,String name,double salary){this.idid;thi…

Vitis 2024.1 无法正常编译custom ip的bug(因为Makefile里的wildcard)

现象&#xff1a;如果在vivado中&#xff0c;添加了自己的custom IP&#xff0c;比如AXI4 IP&#xff0c;那么在Vitis&#xff08;2024.1&#xff09;编译导出的原本的.xsa的时候&#xff0c;会构建build失败。报错代码是&#xff1a; "Compiling blank_test_ip..."…

【图论】并查集的学习和使用

目录 并查集是什么&#xff1f; 举个例子 组成 父亲数组&#xff1a; find函数&#xff1a; union函数&#xff1a; 代码实现&#xff1a; fa[] 初始化code: find code&#xff1a; 递归实现: 非递归实现: union code : 画图模拟&#xff1a; 路径压缩&#xff1a…

Java使用FFmpegFrameGrabber进行视频拆帧,结合Thumbnails压缩图片保存到文件夹

引入依赖 <dependency><groupId>net.coobird</groupId><artifactId>thumbnailator</artifactId><version>0.4.17</version></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ja…

nacos安装,服务注册,服务发现,远程调用3个方法

安装 点版本下载页面 服务注册 每个微服务都配置nacos的地址&#xff0c;都要知道 服务发现 2个是知道了解 远程调用基本实现 远程调用方法2&#xff0c;负载均衡API测试 远程调用方法3&#xff0c;注解 负载均衡的远程调用&#xff0c; 总结 面试题

Blender制作次表面材质

效果: 主要用沃罗诺伊纹理做出云絮感 然后EV开启次表面设置

用 pytorch 从零开始创建大语言模型(四):从零开始实现一个用于生成文本的GPT模型

从零开始创建大语言模型&#xff08;Python/pytorch &#xff09;&#xff08;四&#xff09;&#xff1a;从零开始实现一个用于生成文本的GPT模型 4 从零开始实现一个用于生成文本的GPT模型4.1 编写 L L M LLM LLM架构4.2 使用层归一化对激活值进行标准化4.3 使用GELU激活函数…

vmware tools灰化

Windows7 32位的某些版本&#xff0c;已经不被vmware支持。下面是解决方法&#xff1a; 安装kb4474419补丁包&#xff1a;https://www.catalog.update.microsoft.com/Search.aspx?qKB4474419网络共享。必须要虚拟机和主机可通信。此方法不错&#xff0c;但是操作起来太麻烦。…

html5制作2048游戏开发心得与技术分享

2048游戏开发心得与技术分享 这里写目录标题 2048游戏开发心得与技术分享项目概述技术架构1. 核心技术栈2. 项目结构 核心功能实现1. 数据结构设计2. 移动逻辑实现3. 触摸支持 性能优化1. DOM操作优化2. 事件处理优化 开发心得1. 代码组织2. 调试技巧3. 用户体验优化 项目亮点技…

docker的anythingllm和open-webui压缩包分享(国内镜像拉取,百度云压缩包分享)

文章目录 前言第一部分&#xff1a;镜像获取&#x1f680; 方式一&#xff1a;切换国内下载镜像✅1. 下载anythingllm✅ 2. 下载open-webui &#x1f680;方式二&#xff1a;下载我分享的百度云✅ anythingllm压缩包百度云链接❎ open-webui压缩包 第二部分&#xff1a;下载之后…

DeepSeek-R1深度解读

deepseek提出了一种通过强化学习&#xff08;RL&#xff09;激励大语言模型&#xff08;LLMs&#xff09;推理能力的方法&#xff0c;个人认为最让人兴奋的点是&#xff1a;通过RL发现了一个叫“Aha Moment”的现象&#xff0c;这个时刻发生在模型的中间版本中。在这个阶段&…