C语言 数组

文章目录

    • 1.一维数组
    • 2.二维数组
    • 3.冒泡排序
    • 4.一维函数的数组名
    • 5.二维数组的数组名

1.一维数组

语法形式:type_t arr_name [const_n]
数组是一组相同类型元素的集合
type_t是指数组的元素类型
arr_name是指数组的名称
const_n是一个常量表达式,用来指定数组的大小
比如,int arr[2],char ch[3],doule do[3+4]
在C99标准之前,数组的大小必须是常量或者常量表达式
在C99之后,数组的大小可以是变量,
为了支持变长数组,int arr[n],这种数组是不能初始化的
但是在访问元素时,是可以这么表示的,arr[i]
数组的初始化,在创建数组的同时给予数组一些合理初始值
如果没有给予足够的数值,那么这叫不完全初始化,
剩余的元素默认初始化为0,比如,int arr[10]={4,5,6,7,8}
如果没有初始化元素,则数组会根据后面的元素个数确定前面的数组的个数
当访问单个元素时,可以这么表示,arr[3],这里的[]为下标引用操作符,
数组是使用下标来访问的,下标是从0开始的,所以这里访问的是数组的第4个数字。
计算一个数组中元素的个数,可以这么表示
arr[10] = { 1,2,3,4,5,6,7,8,9,10 }
sz = sizeof(arr) / sizeof(arr[0])
一维数组:随着数组下标的增长,元素的地址,也在有规律的递增
数组在内存中是连续存放的

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

2.二维数组

对于二维数组int array[M][N], 说明如下:
(1) M和N都必须为常数,
(2) M代表数组有M行,N代表每行中有N个元素
(3) 其中M可以省略,省略后必须给出初始化表达式,编译器从初始化结果中推断数组有多少行
(4)N一定不能省略,因为N省略了就不能确定一行有多少个元素,也不能确定数组有多少行
int arr[3][4]
二维数组其他的和一维没有区别
后面两个[]指的是3行4列
初始化:
int arr[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}
代表第一行1,2,3,4,第二行5,6,7,8,第三行9,10,11,12
int arr[3][4] = { 1,2,3,4,5,6,7,8,9,10 }
当数字不足时,自动补零
代表第一行1,2,3,4,第二行5,6,7,8,第三行9,10,0,0
int arr[3][4] = { {1,2},{3,4},{5,6} }
代表第一行1,2,0,0,第二行3,4,0,0,第三行5,6,0,0
二维数组初始化可以省略行,但不可以省略列
int arr[][4]={{1,2,3,4},{5,6}}
代表第一行1,2,3,4,第二行,5,6,0,0
二维数组的使用也是通过下标的方式,行和列都是从0开始的
可以吧二维数组理解为:一维数组的数组
arr[0][j]这个数组的数组名为arr[0]
arr[1][j]这个数组的数组名为arr[1]
arr[2][j]这个数组的数组名为arr[2]
二维数组在内存中也是连续存放的

3.冒泡排序

核心思想
两个相邻的元素进行比较
一趟冒泡排序让一个数据来到它最终应该出现的位置上
要求一个数组按升序排序,
需要用每个数字和后面的数字比较
直到最终的数字按升序排序
数组传参的时候,形参有2种写法:
(1)数组
(2)指针
形参是数组的形式

#include <stdio.h>
void bubble_sort(int arr[],int sz)//不能在函数内部求数组元素的个数
{//趟数int i = 0;for (i = 0; i < sz - 1; i++){//一趟冒泡排序int j = 0;for (j = 0; j < sz - 1 - i; j++){if (arr[j] > arr[j + 1]){//交换int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;}}}
}
int main()
{//数组//把数组的数据排成升序int arr[] = { 6,3,5,9,4,1,7,8,2,0 };int sz = sizeof(arr) / sizeof(arr[0]);//0 1 2 3 4 5 6 7 8 9//冒泡排序的算法,对数组进行排序bubble_sort(arr,sz);int i = 0;for (i = 0; i < sz; i++){printf("%d ", arr[i]);}return 0;
}

4.一维函数的数组名

数组名确实能表示首元素的地址
但是有2个例外:
1.sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节
2.&数组名,这里的数组名表示整个数组,取出的是整个数组的地址

#include <stdio.h>
int main()
{int arr[10] = { 0 };printf("%p\n", arr);//arr就是首元素的地址printf("%p\n", arr+1);printf("-----------------\n");printf("%p\n", &arr[0]);//首元素的地址printf("%p\n", &arr[0]+1);printf("-----------------\n");printf("%p\n", &arr);//数组的地址,尽管打印出来的和上面的相同,//但是它是整个数组的地址,//下面打印的地址和上面的不同,//就是因为它跳过了整个数组直接从下一个数组的首元素的地址开始打印printf("%p\n", &arr+1);return 0;
}

5.二维数组的数组名

#include <stdio.h>
int main()
{int arr[3][4] = { 0 };printf("%d\n", sizeof(arr) / sizeof(arr[0]));//计算元素的行数printf("%d\n", sizeof(arr[0]) / sizeof(arr[0][0]));//计算元素的列数printf("%p\n", arr);//也计算的是首元素的地址,但是这里的首元素指的是arr[0]这一整行4个元素的地址
}

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

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

相关文章

mongoDB7.0.6版安装与使用(最新版踩坑记录)

这里写自定义目录标题 0.前言1.MongoDB下载与安装2.启动服务及验证3.命令行访问4.navicat访问5.停止服务 0.前言 本文总结了最近版mongoDB下载安装的过程及简单的应用&#xff0c;整个过程不涉及修改配置文件&#xff0c;甚至不用设置用户名密码也不用登录认证&#xff0c;在进…

HarmonyOS NEXT应用开发—投票动效实现案例

介绍 本示例介绍使用绘制组件中的Polygon组件配合使用显式动画以及borderRadius实现投票pk组件。 效果预览图 使用说明 加载完成后会有一个胶囊块被切割成两个等大的图形来作为投票的两个选项&#xff0c;中间由PK两字分隔开点击左边选项&#xff0c;两个图形会随着选择人数…

Java城管智慧执法管理系统源码带APP

目录 一、系统概述 二、系统开发环境 三、功能模块 四、应用价值 1、提升案件办理效率 2、提升监管效能 3、提升行政执法水平 4、推进行政执法创新 一、系统概述 智慧城管系统是一个基于现代信息技术手段的综合管理平台&#xff0c;旨在通过强化信息获取自动化、监督管…

官宣!眉州东坡终生认养大熊猫“星星”

2024年03月19日,眉州东坡终生认养大熊猫“星星”签约仪式暨第八届有机川熊猫竹笋节在北京和重庆同时举行。眉州东坡董事长王刚先生、重庆动物园副处长殷毓中先生等嘉宾在重庆共同出席了此次认养仪式,重庆动物园向眉州东坡授予大熊猫终生认养证书,宣布星星正式加入眉州东坡大家庭…

Game of Nodes 16进8

KNIME 还可以用成这样? 是不是有点过分了。 Tableau, PowerBI 同学请绕行&#xff0c;我们讨论的不是同一个东西... 由于 Game of Nodes 没有公开题目&#xff0c;且各个小组赛的题目也是不一样的&#xff0c;在这里我们只能通过拼接图来猜想小组赛题目了。 有的解决方案我甚至…

Android源码阅读 SharedPreferences - 1

目录 前言 正文 SharedPreferences.java PreferenceManager.java ContextImpl.java 前言 由于笔者目前水平限制&#xff0c;表达能力有限&#xff0c;尽请见谅。 SharedPreferences提供了一种轻量级的数据存储方式&#xff0c;允许保存和获取简单的键值对。它适用于保存少…

中霖教育:一级建造师和一级造价师通过率高吗?

在建筑工业领域&#xff0c;一级建造师和一级造价工程师考试都是比较热门的考试&#xff0c;每年参加的人数都非常多&#xff0c;如果只备考一个的话&#xff0c;2024年选择哪项考试更为合适? 一建和一造的平均通过率均未超过10%&#xff0c;两者难度相近&#xff1a; 1. 一…

力扣刷题---岛屿问题--c++

DFS&#xff1a;深度优先遍历&#xff1a;深度优先遍历是一种优先走到底、无路可走再回头的遍历方式 我们所熟悉的 DFS&#xff08;深度优先搜索&#xff09;问题通常是在树或者图结构上进行的。而我们今天要讨论的 DFS 问题&#xff0c;是在一种「网格」结构中进行的。岛屿问题…

源码部署LAMP架构

LAMP 文章目录 LAMP1. lamp简介2. web服务器工作流程2.1 cgi与fastcgi2.2 httpd与php结合的方式2.3 web工作流程 3. LAMP平台构建3.1 安装httpd3.2 安装mysql3.3 安装php3.4 验证 1. lamp简介 有了前面学习的知识的铺垫&#xff0c;今天可以来学习下第一个常用的web架构了。 …

【基于HTML5的网页设计及应用】——动态添加下拉菜单

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

什么是增强型SSL证书?购买一张需要多少钱?

增强型SSL证书是一种提供更高级别安全验证与用户信任度的网络安全工具&#xff0c;也被称为EV证书。相较于DV&#xff08;域名验证&#xff09;和OV&#xff08;组织验证&#xff09;证书&#xff0c;它通过严格的身份核实流程确保网站所有者的合法性和真实性。 首先&#xff0…

【C++】string 类---字符判断与大小写转换(超详细解析!)

目录 一、string 类的介绍 二、字符大小写转换与判断常用函数 &#x1f4a6; 字符大小写判断 ① isalpha() ② isalnum() ③ isdigit() ④ islower() ⑤ isupper() &#x1f4a6; 字符大小写转换 ① tolower() ✨方法一&#xff1a; ✨方法二&#xff1a; ② toupper() ✨方…

【MySQL】MySQL视图

文章目录 一、视图的基本使用1.创建视图2.修改了视图&#xff0c;对基表数据有影响3.修改了基表&#xff0c;对视图有影响4.删除视图 二、视图规则和限制 一、视图的基本使用 视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&#xff0c;视图包含一系列带有名称…

【springboot】@SpringBootApplication 加载原理解析

从何处放入 AutoConfigurationImportSelector.selectImports AbstractApplicationContext.refresh AbstractApplicationContext.invokeBeanFactoryPostProcessors PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors 此处一个关键信息 只有BeanDefinition…

Html Open with Live Server 报错windows找不到文件

输入setting.json 填入你的浏览器路径 即可

【Qt】Qt代码格式化配置

这里记录一下个人使用的格式化配置: 个人使用的格式化工具Artistic Style格式化信息&#xff1a; --stylelinux #&#xff1a;Linux 风格格式和缩进 #--stylekr #indentspaces4 # 缩进采用4个空格 -A1 #使用AllMan程序风格&#xff0c;即大括号另起一行。 indent-switche…

java入门-变量与常量

java 基本语法-变量与常量 变量 变量的本质 程序中我们会经常看到类似 int x 3**;** 的表达式&#xff0c;x就是我们常说的变量&#xff0c;从计算机角度我们来看看变量x的本质是什么&#xff1f; 在程序开发中定义一个变量x, 计算机会在内存中开辟内存空间&#xff0c;计算…

测电笔与零火线

火线零线不分正负&#xff0c;因此即使接反电气仍可以使用&#xff0c;只是当开关断电的时候灯泡是有电的&#xff0c;此时比较危险容易触电。 火线和零线上的电流都是正弦波。简单的来讲&#xff0c;对于交流电路&#xff0c;电流一会从火线出发通过用电设备流向零线&#xff…

上位机图像处理和嵌入式模块部署(qmacvisual预处理实战)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面&#xff0c;我们说了图像预处理&#xff0c;但是没有给出相应的实战案例。今天还是有必要做一个说明的。预处理方法虽然相关的算法很多&#…

实现el-table合并列

效果图如下 <el-table :data"atlasDataList" style"width: 100%" :span-method"spanMethod"><el-table-column prop"stationName" label"" width"180" /><el-table-column prop"atlasNumbe…