目录
1数组
数组是⼀组相同类型元素的集合;
数组分为⼀维数组和多维数组,多维数组⼀般⽐较多⻅的是⼆维数组。
1.1数组创建
type arr_name[常量值];
存放在数组的值被称为数组的元素,数组在创建的时候可以指定数组的⼤⼩和数组的元素类型。
我们现在想存储某个班级的20⼈的数学成绩,那我们就可以创建⼀个数组,如下:
1 int math[20];
1. 2 数组的初始化
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//完全初始化。
//int arr1[10] = { 1,2,3,4 };//不完全初始化,后面默认的值是 0;
//char arr2[4] = { 'a','s','d','r' };//字符型完全初始化
//char arr3[4] = { 'a','s' };//字符型不完全初始化,后面默认的值是 0;
return 0;
}
2⼀维数组的使⽤
2.1数组下标
下标是从0开始的,假设数组有n个元素,最后⼀个元素的下标是n-1,下 标就相当于数组元素的编号
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
在C语⾔中数组的访问提供了⼀个操作符 [ ] ,这个操作符叫:下标引⽤操作符。
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
printf("%d \n", arr[5]);//arr[5]是下表为5的元素 下标从0开始 ,打印结果就是 6
printf("%d \n", arr[9]);//那么这个的结果会是什么呢? 结果是10
return 0;
}
2.2数组元素的打印
只要我们产⽣数组所有元素的下标就可以了,那我们使⽤for循环产⽣0~9的下标,接下来使⽤下标访 问就⾏了
#include <stdio.h>
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };//这个的个数可以省略不写,那么编译器就会看你有多少值就是多大
// 下标 0 1 2 3 4 5 6 7 8 9
int i = 0;
for (i = 0; i < 10; i++)//产生下标0~9的十个数值
{
printf("%d ", arr[i]);//打印出0~9下标的数值
}
return 0;
}
2.3数组的输⼊
#incldue <stdio.h>
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,0 };
int i = 0;
for (i = 0; i < 10; i++)
{
scanf("%d", &arr[i]);//输入每个元素的值
}
for ( i = 0;i <10 ; i++)
{
printf(" %d ", arr[i]);//打印出元素的值
}
return 0;
}
2.4 ⼀维数组在内存中的存储
#cinldue <stdio.h>
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,0 };
int i = 0;
for (i = 0; i < 10; i++)
{
printf(" &[%d] = %p\n" ,i, &arr[i]);//&是取地址符号,%p是用来打印地址的,
// 地址的大小由编译器的位数决定,位数越大,地址越长
}
return 0;
}
这个打印出来的地址是 64 位的,比较长。可以换成32位的便于观察。
下面的地址都是由十六进制来打印的 ,
十六进制: 0~9 A B C D E F , 字母分别在十六进制里表示 10, 11,12,13,14,15。
由观察可以看出arr[ 0]到arr[1] 地址的长度为4, int 类型字节就是4
数组在内存中是连续存放的,
随着下标的增长,地址也由低到高变化
2.5sizeof 计算数组元素个数
sizeof 中C语⾔是⼀个关键字,是可以计算类型或者变量⼤⼩的,其实 sizeof 也可以计算数组的 ⼤⼩。
#include <stdio.h>
int main()
{
int a = 0;
int arr[] = { 1,2,3,4,5,6,7,8,9,0 };
printf("%d\n ", sizeof(int));//结果为4 sizeof只计算类型
printf("%d\n ", sizeof a);//也是4
printf("%d\n ",sizeof( arr));//这里会是多少呢? 答案是40 这里编译器默认把arr数组元素个数当成10个 计算:10 * sizeof(int )=40
return 0;
计算出数组的元素个数:
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,0 };
printf("%d ", sizeof(arr) / sizeof arr[0]);//就可以计算出arr的数据个数return 0;
}
简化代码
#include <stdio.h>
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,0 };
int sz = sizeof(arr) / sizeof arr[0];
int i = 0;
for (i = 0; i < sz; i++)//这里sz的放置更灵活,它会随着数组长度改变。
{
printf("%d ", arr[i]);
}
return 0;
}
完结 又写了一天 ,加油 明天会更好