黑马程序员--数组的概念

本文详细介绍了数组的基本概念,包括数组的定义、分类、一维数组的定义、初始化、使用及注意事项,还讨论了数组的存储方式、越界问题、在函数中的应用,提供了实例解析数组元素作为函数参数及数组名作为函数参数的使用方法。

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

------<a href="http://write.blog.youkuaiyun.com/postedit?ref=toolbar" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

 

                                     第五讲-数组的基本概念与分类


01-数组的基本概念:
       在程序中常常需要定义很多同一类型的变量,那么为例简化此操作,将这些相同类型的变量用一种特定的数据结构进行存储。将他们按照一定顺序存储在一起,用一个名字和一个序号进行表示,它就是数组。
例如:
int num1, num2, num3, num4, …;
int num[4];
很显然使用数组可以大大简化代码。
 
不仅如此,数组的序号特征可以实现很多非常灵活的数据结构。
 
2、数组的基本概念
数组:即同一数据类型的变量的集合,其中每一个数据按照指定顺序存储在一段连续的内存上。
数组元素:数组中存储的单个数据
下标:数据存储的序号
维度:数组下标的层级数。
 
3、数组的分类
1)按照存储数据的类型分:
数值数组
字符数字
指针数组
结构数组
2)按照维度分:
一维数组
二维数组
多维数组
 
 
04-一维数组
 
1、一维数组
数组中的每一个元素都不是数组,那么这个数组称为一维数组,即维度为一。
 
2、一维数组的定义
数组的使用与变量是一样的,需要先定义,在初始化,最后使用
语法:
类型说明符 数组名[常量表达式];
说明:
1)数据类型决定数组中每一个元素的数据类型
2)数组名好似变量名,使用数组中元素的时候需要利用数组名
3)数组明后的常量表达式表示数组元素的个数,即数组长度
 
3、数组定义的注意事项
1)数组长度不可以变量
2)数组长度可以使用宏定义(#define M 10)
3)数组名标识规则与变量名一样
4)数组的定义可以放在变量中(int num, array[4];)
 
 
3、一维数组的初始化
所谓初始化,就是为数组中每一个元素赋初值。数组的初始化可以分为:先定义,后初始化;定义的时候初始化
 
1)定义的时候初始化
类型 数组名[长度] = { 值1, 值2, … };
 
注意:
-将数组的每一个元素都初始化,称为完全初始化
-长度可以省略,会根据后面的数据自动判断长度
-如果数值数量多于数组长度,报错
-如果数值数量小于数组长度,则其余初始化为 0(部分初始化)
-数组元素的编号从 0 开始(int array[10] = { [3] = 3, [8] = 8 };)
 
2)先定义后初始化
定义好数组后,使用下标进行数组元素初始化。
 
 
 
4、数组初始化与未初始化
1)如果数组定义没有初始化,那么数组元素的值是随机的
2)如果部分初始化,则其余为 0
 
5、数组元素的使用
使用如下语法引用数组中制定下标位置的元素
数组名[下标]
该语法在使用的时候,与使用变量的规则一样
 
 
05-一维数组练习
 
1、从键盘输入数据,存入数组,然后遍历求和、平均值、最大值以及最小值
2、修改一下打印一个数字的二进制格式
 
 
06-一维数组的存储方式(理解)
 
1、数组的存储模型
存储方式
1)连续存储空间
2)大小有类型与个数决定
3)元素大小相同
4)数组名是首地址
5)每一个元素使用偏移
 
2、一维数组元素地址
1)数组与数组间地址不一定连续
2)数组内元素是连续的
 
3、计算数组的长度与指定元素地址
 
 
 
07-一维数组的越界问题
 
1、数组的越界
所谓越界的含义就是访问的数组元素超出了数组的范围。
int num1[] = {1,2,3};
int num2[] = {4,5,6};
num2[3] = 99;
 
 
 
 
08-数组元素作为函数参数
 
1、数组与函数的结合
数组与函数结合在一起使用有两种常见的情况
1)将数组元素作为函数参数
2)将数组名作为函数参数
2、数组元素作为函数参数
函数调用时,可以将数组元素作为参数传入。例如:
fun ( array[2] );
其使用方法和使用正常变量或常量是一样的。
 
求和函数,绘图复习解释传递方式
 
 
练习
1、判断一个数组中元素的值,如果值大于0,则打印该值,如果小于0,则输出0。

void fun(int a[],int n)

{

         for(int i=0;i<n;i++)

         if(a[i]>0)

        printf("%d",a[i]);

         else

    {

         printf("0");

    }

}
2、写一个程序,初始化一个数组。要求数组长度为10,里面的值为0-9的随机数,并且每一个数字出现一次。

void fun()

{

        int a[10];

        for(i=0;i<10;i++)

{

     for (j=0;j<=10;j++)

        a[i]=arc4_random(10);

        if(a[i]=a[j+1])

{

              a[j+1]=arc4_random(10);

}

}
 }
 
09-数组名作为函数参数
 
1、将数组名作为函数参数
1)函数的形参需要与数组一致
2)数组名的传递为地址传递
3)一般函数参数有两个,一个是数组名,另一个是数组长度
4)传递数组名,可以在函数结束后保留数组处理的结果
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值