数组

本文详细介绍了C语言中的数组,包括一维数组的定义、初始化、内存表示和使用方法,以及二维数组的概念、初始化和访问方式。通过实例展示了如何通过数组来存储和操作数据,强调了一维数组的重要性,并指出虽然二维数组在表示二维问题时更为直观,但在实际编程中使用较少。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组


1数组

引例
• 一个学生的成绩在0~100之间,可以用char表示
• char a = 98;
• 一个班有30个学生,如何表示他们的成绩?
• char a00 = 98;
• char a01 = 95;
• …
• char a29 = 88;
• 一共定义30个变量, a00~a29

引例
• 一个年级有100个学生,如何表示它们的成绩?
• ???
• 使用数组:只需要定义一个变量
• char arr[100];

数组
• char arr[5];
• 数组的元素类型: char
• 数组的名称: arr
• 数组的元素个数: 5
• 意义:相当于N个变量并排在一起

数组的初始化
• 数组定义时可以不初如化,例如,
• char arr[5];
• 数组也可以初始化,例如,
• char arr[5] = {90,91,92,93,94 };
• 也可以只初始化一部分元素:
• char arr[5] = {90,91 };

数组的内存表示
• char arr[5] = {90,91,92,93,94 };
• 在内存中是5个字节,依次值为90,91,92,93,94

数组的使用
• char arr[5] = {90,91,92,93,94 };
• 想知道第1个同学的分数
• char s1 = arr[0];
• 想知道第2个同学的分数
• char s2 = arr[1];
• 注意:在访问数组的元素时,中括号内的下标是 从0开始的,arr[0], arr[1], …, arr[4]

改变数组中元素的值
• char arr[5] = {90,91,92,93,94 };
• arr[0] = 89;
• arr[1] = 88;
• …
• 在VC中观察内存中值的变化。。。

小例子
• char arr[5] = {90,91,92,93,94 };
• 在录入的时候第2个同学和第3个同学的成绩搞反 了,要求改过来。。。。
char s = a[1];
a[1] = a[2];
a[2] = s;

更多数组
• int arr[8] = {1,2,3,4,5,6,7,8}; // 4*8=32
• short arr[100];
• double arr[100];
• float arr[100];
• 注意:元素类型、元素个数、数组名、初始值

2二维数组

一维数组的初始化方法
① char a[5]; // 不给初始值
② char b[5] = {90, 91, 92, 93, 94 }; // 给 全初始值
③ char c[5] = { 90, 91 };// 部分初始化
④ char d[5] = {0}; // 全部为0
⑤ char e[] = {90, 91, 92, 93, 94};
⑥ 注:最后一个元素不要逗号

引例
语文 数学 外语 第1个同学 90 91 92
第2个同学 80 81 82
第3个同学 70 71 72
第4个同学 60 61 62
第5个同学 50 51 52

-语文数学外语
第1个同学909192
第2个同学808182
第3个同学707172
第4个同学606162
第5个同学505152

数组
• char arr[15] =
• {
▫ 91, 92, 93, 81, 82, 83, 71, 72, 73,
▫ 61, 62, 63, 51, 52, 53
• };
• 第m位同学的第n门的成绩:
• arr [ m * 3 + n];
• m: 0, 1, 2, 3, 4
• n: 0, 1, 2

二维数组的初始化
• char arr[5][3] =
• {
▫ { 91, 92, 93 }, // 每一行以逗号分隔
▫ { 81, 82, 83 }, // 每一行以逗号分隔
▫ { 71, 72, 73 }, // 每一行以逗号分隔
▫ { 61, 62, 63 }, // 每一行以逗号分隔
▫ { 51, 52, 53 }, // 每一行以逗号分隔
};

二维数组的访问
• 访问元素的方法:
• arr[0][0]; // 第0行第0列
• arr[m][n]; // 第m行第n列
• 注间:下标从0开始

二维数组的访问
• 访问元素的方法:
• arr[0][0]; // 第0行第0列
• arr[m][n]; // 第m行第n列
• 注间:下标从0开始

二维数组的内存视图
• char arr[5][3] =
• {
▫ { 91, 92, 93 }, // 每一行以逗号分隔
▫ { 81, 82, 83 }, // 每一行以逗号分隔
▫ { 71, 72, 73 }, // 每一行以逗号分隔
▫ { 61, 62, 63 }, // 每一行以逗号分隔
▫ { 51, 52, 53 }, // 每一行以逗号分隔
• };
• 二维数组本质上还是一维数组。。。。

二维数组和一维数组的区别
• 本质一样
• char a[15];
• char b[5][3];
• 在内存中都是15个字节
• 表示二维问题,用二维数组会方便一些,不用自 己计算下标了。

小结
• 表示二维问题(表格状数据)用二维数组更方便
• 二维数组和一维数组本质相同
• 一维数组最重要,二维数组或高维数组极少被使 用!

学习资源 《C语言/C++学习指南》语法篇(从入门到精通)》

【基于QT的调色板】是一个使用Qt框架开发的色彩选择工具,类似于Windows操作系统中常见的颜色选取器。Qt是一个跨平台的应用程序开发框架,广泛应用于桌面、移动和嵌入式设备,支持C++和QML语言。这个调色板功能提供了横竖两种渐变模式,用户可以方便地选取所需的颜色值。 在Qt中,调色板(QPalette)是一个关键的类,用于管理应用程序的视觉样式。QPalette包含了一系列的颜色角色,如背景色、前景色、文本色、高亮色等,这些颜色可以根据用户的系统设置或应用程序的需求进行定制。通过自定义QPalette,开发者可以创建具有独特视觉风格的应用程序。 该调色板功能可能使用了QColorDialog,这是一个标准的Qt对话框,允许用户选择颜色。QColorDialog提供了一种简单的方式来获取用户的颜色选择,通常包括一个调色板界面,用户可以通过滑动或点击来选择RGB、HSV或其他色彩模型中的颜色。 横渐变取色可能通过QGradient实现,QGradient允许开发者创建线性或径向的色彩渐变。线性渐变(QLinearGradient)沿直线从一个点到另一个点过渡颜色,而径向渐变(QRadialGradient)则以圆心为中心向外扩散颜色。在调色板中,用户可能可以通过滑动条或鼠标拖动来改变渐变的位置,从而选取不同位置的颜色。 竖渐变取色则可能是通过调整QGradient的方向来实现的,将原本水平的渐变方向改为垂直。这种设计可以提供另一种方式来探索颜色空间,使得选取颜色更为直观和便捷。 在【colorpanelhsb】这个文件名中,我们可以推测这是HSB(色相、饱和度、亮度)色彩模型相关的代码或资源。HSB模型是另一种常见且直观的颜色表示方式,RGB或CMYK模型不同,它以人的感知为基础,更容易理解。在这个调色板中,用户可能可以通过调整H、S、B三个参数来选取所需的颜色。 基于QT的调色板是一个利用Qt框架和其提供的色彩管理工具,如QPalette、QColorDialog、QGradient等,构建的交互式颜色选择组件。它不仅提供了横竖渐变的色彩选取方式,还可能支持HSB色彩模型,使得用户在开发图形用户界面时能更加灵活和精准地控制色彩。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值