c语言( 10)数组

目录

1数组

1.1数组创建

1. 2 数组的初始化

2⼀维数组的使⽤

2.1数组下标

 2.2数组元素的打印

2.3数组的输⼊

 2.4 ⼀维数组在内存中的存储

2.5sizeof 计算数组元素个数


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;
}

 完结 又写了一天  ,加油 明天会更好

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值