数组由数据类型相同的一系列元素组成。
数值概述数组的定义和初始化
数组是包含给定类型的一组数据,并将这些数据依次存储在连续的内存空间中,每个独立的数据被称为数组的素(element)。元素的类型可以是任意类型。 数组本身也是一个结构,其类型由它的元素类型延伸而来。更具体地数组的类型由元素的类型和数量所决定。如果一个数组的元素是 T 类型,那么该数组就称为“了数组"”。例如,说,果元素类型为 int,那么该数组的类型就是“int 数组”。然而,int 数组类型是不完整的类型,除非指定了数组元素的数量。如果一个 int 数组有 16 个元素,那么它就是一个完整的对象类型,即“16 个 int 元素数组”
1.什么是数组?
数组是相同数据类型元素的集合。
简单说,数组即就是在计算机内存中找一块连续的内存,在里面放相同类型的数据。
注意:
1.数组里放入的数据类型必须相同;
2.当数组创建后其长度就不可改变;
一维数组的定义和初始化
数组的定义决定了数组名、元素类型以及元素个数其语法如下:
<类型> 组名[<元素数量>];
元素数量在方括号 ([]) 之间,它必须是大于0 的整数常量表达式
2.数组的声明的两种方式:
1)int arr[数据长度]; 常量(宏常量,常变量)
int arr[SIZE] //随机值
2)int arr[10]={1,2,3,4,5,6,7,8,9,10 };
3)int arr[10]={1}; 存在1,0,0,0,0,0,0,0,0,0
int arr[10]={}; 存在10个0
4)int arr[]={1,2,3,4}; //自动推导数组元素个数
3. 数组名代表的含义:
数组首元素的地址 &arr[0] <=> arr
arr代表整个数组元素 ->数组定义处于同一个作用域 sizeof(arr)
int arr[10] = { 0 };
printf("%d\n", sizeof(arr)); 40字节
int arr[10]={0};
sizeof(arr) -> 数组总字节大小
sizeof(arr[0]) ->元素类型所占字节数
int len= sizeof(arr)/sizeof(arr[0]) ->数组元素总个数
4.循环遍历数组元素
for(int i=0;i<sizeof(arr)/sizeof(arr[0]);i++)
{
printf("%d\n",arr[i]);
}
5.打印一个数组里面的元素
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void show(int *arr[10],int len) //arr形参退化为指针(地址)
{
for (int i = 0; i < len; i++)
{
printf("%-2d\n", arr[i]);
}
}
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int len = sizeof(arr) / sizeof(arr[0]);
show(arr, len);
return 0;
}
运行结果如下图:
示例1:在一个一维数组中,判断是否存在一个数
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
//是否存在一个元素 ,键盘获取
int value, i=0; // 变量的作用域;定义处生
scanf("%d", &value);
int arr[10] = { 1,2,3,4,5,6,0 };
int len = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i <len; i++)
{
if (arr[i] == value) {
printf("存在\n");
break;
}
}
printf("不存在\n");
if (i == len) {
printf("不存在\n");
}
return 0;
}
示例二:给定一个整型数组{1,2,3,3,1,2,4,5,1},统计数字1的个数
int getcount(int* arr,int len,int value)
{
int count = 0;
for (int i = 0; i < len; i++)
{
if (arr[i] == value)
{
count++;
}
}
return count;
}
int main()
{
int arr[] = {1,2,3,3,1,2,4,5,1 };
int len = sizeof(arr) / sizeof(arr[0]);
int count = getcount(arr, len, 1);
printf("%d\n", count);
/*show(arr, len);*/
return 0;
}
运行结果如下: