数组内容简介

数组

**
1、数组的概念及分类
2、数组的创建与初始化
3、数组的使用
4、数组在内存中的存储
5、sizeof计算数组元素的个数
**

1、数组的概念及分类

数组是⼀组相同类型元素的集合;从这个概念中我们就可以发现2个有价值的信息:
• 数组中存放的是1个或者多个数据,但是数组元素个数不能为0
• 数组中存放的多个数据,类型是相同的。
数组的分类
数组分为⼀维数组多维数组,多维数组⼀般⽐较多⻅的是⼆维数组。

*2、数组的创建与初始化

1、一维数组的创建

type arr_name[常量值];

存放在数组的值被称为数组的元素,数组在创建的时候可以指定数组的⼤⼩和数组的元素类型
type 指定的是数组中存放数据的类型,可以是: char、short、int、float 等,也可以⾃定义的类型。
arr_name 指的是数组名的名字,这个名字根据实际情况,起的有意义就⾏。
[ ] 中的常量值是⽤来指定数组的⼤⼩的,这个数组的⼤⼩是根据实际的需求指定就⾏。
eg.

      int arr[10]; //arr数组中存放的元素是整形类型               
      char a[100]; //a数组中存放的元素是字符类型   

2、二维数组的创建

type arr_name[常量值1][常量值2];
例如:
int arr[3][5];
double data[2][8];

3表⽰数组有3⾏。
5表⽰每⼀⾏有5个元素。
int 表⽰数组的每个元素是整型类型。
arr 是数组名,可以根据⾃⼰的需要指定名字。
data数组意思基本⼀致。

3、数组的初始化

//一维数组初始化
//完全初始化
int arr[5] = {1,2,3,4,5};
//不完全初始化
int arr2[6] = {1};//第⼀个元素初始化为1,剩余的元素默认初始化为0
//错误的初始化 - 初始化项太多
int arr3[3] = {1, 2, 3, 4};
//二维数组是使用大括号来初始化

ps:在32位操作系统下(x86),以下代码会死循环。

#include 
int main()
{
    int i = 0;
    int arr[] = {1,2,3,4,5,6,7,8,9,10};
    for(i=0; i<=12; i++)
    {
        arr[i] = 0;
        printf("hello bit\n");
    }
    return 0;
}

原因:(数组在内存从低到高的地址中存放)数组越界后也会为越界的部分创建地址,将其存入其中,创建a[12]的地址时覆盖i的地址,同一地址同时只能存放一个值,该值变化时,存放在该地址中的量的值一同改变,导致当 a[12]被赋值为0时,i的值一同变为0,从而产生了死循环。
数组内容简介_第1张图片

*3、数组的使用

1、数组下标
数组下标是从0开始的,假设数组有n个元素,最后⼀个元素的下标是n-1下标就相当于数组元素的编号。

int arr[10] = {1,2,3,4,5,6,7,8,9,10};
//             0 1 2 3 4 5 6 7 8 9

在C语⾔中数组的访问提供了⼀个操作符 [] ,这个操作符叫:下标引⽤操作符
有了下标访问操作符,我们就可以轻松的访问到数组的元素了,⽐如我们访问下标为7的元素,我们就可以使⽤ arr[7] ,想要访问下标是3的元素,就可以使⽤ arr[3]。
2、数组的打印(利用for循环实现)

int a[10] = {1,2,3,4,5,6,7,8,9,10};
for(int i=0; i<10; i++)
{
        printf("%d ",a[i]);
}

3、数组的输入(利用for循环实现)

int a[10] = {1,2,3,4,5,6,7,8,9,10};
for(int i=0; i<10; i++)
{
        scanf("%d ",&a[i]);
}

4、数组在内存中的存储

依次打印数组元素的地址:

#include 
int main()
{
 	int arr[10] = {1,2,3,4,5,6,7,8,9,10}; 
 	int i = 0;
 	for(i=0; i<10; i++)
 	{
 		printf("&arr[%d] = %p\n ", i, &arr[i]);
 	}
 	return 0;
}

输出结果:
数组内容简介_第2张图片
从输出的结果我们分析,数组随着下标的增⻓,地址是由⼩到⼤变化的,并且我们发现每两个相邻的元素之间相差4(因为⼀个整型是4个字节)。所以我们得出结论:数组在内存中是连续存放的

5、sizeof计算数组元素个数

sizeof 中C语⾔是⼀个关键字,是可以计算类型或者变量⼤⼩的,其实 sizeof 也可以计算数组的⼤⼩。

#include 
int main()
{
 	int arr[10] = {0};
 	printf("%d\n", sizeof(arr));//数组所占内存大小
 	return 0;
}

接下来就能计算出数组的元素个数:

#include 
int main()
{
 int arr[10] = {0};
 int sz = sizeof(arr)/sizeof(arr[0]);//数组所占内存大小/一个元素所占内存大小
 printf("%d\n", sz);
 return 0;
}

这⾥的结果是:10,表⽰数组有10个元素。

你可能感兴趣的:(c语言)