栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言--数组

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言--数组

文章目录
  • 前言
  • 一、数组是什么?
  • 二、习题练习:
      • 1.求10名学生中的最高成绩
      • 2.对5名学生的成绩升序排序
  • 三、特别注意:
  • 总结


前言

大家好,今天我们来讲解一下有关数组的简单知识。

一、数组是什么?

数组是一段连续空间上相同类型数据的集合。
int a = 0;//这是一个整形变量
当我们只需要存储5个数据的时候我们当然可以创建5个变量,
但是如果我们是要统计全班50个同学的成绩,那我们再创建50个变量就不是那么方便了,
在往上要统计全校2000名学生的成绩呢?这个时候只是命名就够我们头疼一阵的,
这时数组的简洁性就体现出来了
代码如下(示例):

int arr[50] = { 0 };//能够存放50个整形数据的数组
int arr[2000] = { 0 };//存放2000个整形数据

1、数组可以创建为任意类型,例如:int,char,double等
2、数组可以通过下标进行访问,下标运算符为:[ ];
这里需要注意的是 数组的下标是从 0 开始的,
也就是说创建一个数组: int arr[5] = { 0 };
arr[0]是数组的第一个元素,arr[1]是数组的第二个元素,
以此类推,数组的最后一个元素为arr[4] 而不是 arr[5]

3、数组元素存储在一块连续的内存空间
这里要用到 取地址运算符:&(取出该变量在内存中存储空间的首地址);
如图 &arr[0] = 0xE33AF450;(0x开头为16进制)
大家知道一个整形变量占四个字节,那么每往后一个元素,它的首地址都会增加4


二、习题练习: 1.求10名学生中的最高成绩

代码如下(示例):

#include
int main() {
	int arr[10] = { 0 };
	puts("请输入10名学生的成绩。");//puts("");输出字符串并换行
	
	int i = 0;
	for (i = 0; i < 10; i++) {
		printf("arr[%d] = ", i);
		scanf("%d", &arr[i]);
	}
	
	int max = arr[0];//将第一名学生的成绩赋给max
	for (i = 1; i < 10; i++) {//从第二个学生开始比较
		if (max < arr[i])
			max = arr[i];
	}
	printf("最高分为:%dn", max);
	return 0;
}


2.对5名学生的成绩升序排序

代码如下(示例):

#include

int main() {
	int arr[5] = { 0 };
	int i = 0;
	puts("请输入5名学生的成绩。");
	for (i = 0; i < 5; i++) {
		printf("arr[%d] = ", i);
		scanf("%d", &arr[i]);
	}

	for (i = 0; i < 4; i++) {	//冒泡排序
		for (int j = 0; j < 5 - 1 - i; j++) {
			if (arr[j] > arr[j + 1]) {
				int z = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = z;
			}
		}
	}
	
		puts("通过冒泡排序进行升序。");
		for (i = 0; i < 5; i++) 
			printf("arr[%d] = %dn", i, arr[i]);
		printf("n");
	return 0;
}


三、特别注意:

1.数组名的使用有两种特例
第一种是sizeof(数组名),这里的数组名代表整个数组,求出来的是整个数组所占的字节数
第二种是&数组名,这里的数组名代表的是整个数组的地址,求出的是整个数组的地址大小
除了以上两种情况,其他数组名都表示首元素的地址。

2.int arr[] = {0, 1, 2, 3, 4};
此处初始化时省略了数组的大小,编译器就会根据我们初始化时的数据个数自动初始化数组大小,
此处就初始化为arr[5]。
由此可见数组的个数是可以省略的,但是要注意多维数组的省略方式
例如:int arr[3][4] = { 0 };这是一个三行四列数组,我们可以把它看做元素类型为 int [4],元素个数为3的数组
这里同样可以省略元素个数写成 int arr[ ][4] = { 1,2,3,4,5,6 }; 此时元素个数为 2
同理得 int arr[ ][4][5] = { 1,2,3,4,5,6 }; 元素类型为 int [4][5] ,元素个数为 1
但是注意不能写成 int arr[3][] = { 1,2,3,4,5,6 }; 这样写的话相当于元素类型不明确,编译器不知道应该如何分配这些整数。

3.数组作为参数传递时传递的是元素首地址,而不是整个数组
所以如果在被调用函数中使用 sizeof(arr)/ sizeof(arr[0]) 这样是算不出来元素个数的,
数组作为参数传递时是不可能传过去整个数组的,所以如果在传参时需要将元素个数一并传出。


总结

今天的第一部分所讲是数组最基本的知识,第三部分难度有所提高,下一篇博客我们再详细探讨,
今天就到这里,谢谢大家。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1025236.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号