目录
前言
在编程过程中,我们会遇到要存放大量同类数据的情况,这时侯就不得不介绍C语言中非常必要的一个东西——数组了
一、数组是什么?
数组就是大量连续存放的同类数据。
一维数组写做:int(类型,其他类型也可以) arr(数组名)[ 常量n (表示个数)]
二维数组:把每个一维数组当成一行元素;
写做 int arr(数组名)[ i(表示行)] [ j (表示列)]
注意:在访问时数组下标是从0开始的
例如
第1个数据下标为0,写作arr[0];
第10个数据的下标是9,写作arr[9]
二、初始化
1.一维数组初始化
- 完全初始化
- 不完全初始化:未初始化部分默认初始化为0
- 初始化后可以不指定数组大小
#include<stdio.h>
int main()
{
int arr[5] = { 1,2,3,4,5 };//完全初始化
int arr2[5] = { 1,2,3 };//不完全初始化
int arr3[] = { 6,7,8,9,10 };//初始化后可以不指定数组大小
int i = 0;
for (i = 0; i < 5; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
for (i = 0; i < 5; i++)
{
printf("%d ", arr2[i]);
}
printf("\n");
for (i = 0; i < 5; i++)
{
printf("%d ", arr3[i]);
}
return 0;
}
打印结果
2.二维数组初始化
行可以省略,但是列不行
可以用大括号来对二维数组进行不完全初始化
#include<stdio.h>
int main()
{
int arr[2][3] = { {1,2},{4} };
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
printf("%d", arr[i][j]);
}
printf("\n");
}
return 0;
}
打印结果
二. 数据存储
数组中的数据在内存中是连续存放的,地址由高到低,二维数组也是(并不是我们想的是多行多列存放的,是存放在一行的)
三.关于数组名的讨论
数组名大部分是数组首元素的地址,但是有两个例外
- sizeof(数组名),数组名如果单独放置在sizeof内部,表示的是整个数组,计算的是整个数组的内存大小。
- &数组名 这里的数组名表示整个数组,取出的是整个数组的地址大小。所以&数组名+1后跳过的是整个数组大小的地址。
#include<stdio.h>
int main()
{
int arr[4]= {1,2,3,4 };
printf("%d \n", sizeof(arr));
printf("数组首元素的地址%p\n", &arr[0]);
printf("arr的值=%p\n", arr);
printf("arr+1的值=%p\n", arr+1);
printf("\n");
printf("&arr的值=%p\n", &arr);
printf("&arr+1的值=%p\n", &arr + 1);
return 0;
}
注:什么类型的指针+1后就跳过什么类型大小的数据空间
总结
本文简单介绍一些关于数组的知识点