嵌入式学习之路 7(C语言基础学习——数组)

        数组是一组相同类型数据的集合,也是一组相同类型变量的集合,同时数组本身也是一种数据类型。

       在需要定义多个相同类型的产量时,按照以往的方法一个一个定义就相当繁琐,而数组可以批量处理多个数据。

一、一维数组

1、数组语法:

类型说明符  数组名  [常量表达式]

类型说明符就是数据类型。

(1)类型说明符:指定该数组中元素的数据类型,如整型(int、short、long、long long)、浮点型(float、double、long double)、字符型(char)等。
(2)数组名:是数组的标识符,遵循与普通变量名相同的命名规则,用于代表该数组。
(3)[常量表达式]:[]表示这是数组类型,常量表达式表示数组的长度,即数组中元素的个数。

需要注意的是:

1、C99标准之后,数组的长度可以用变量表示。

2、数组的长度可以省略不写,但是必须要有初始化,因为编译器要根据初始化的值来推算数组的实际长度。

如:int len=sizeof(a)/sizeof(int)

表示用数组的总长度除去单个数组的长度(字节)

比如:  int array[10] 

       表示定义了一个名为array的可以存放10个int型数据的数组,也可以理解为一下子定义出10个int型变量。

2、数组的初始化

全部初始化:int a[10]={1,2,3,4,5,6,7,8,9}

部分初始化:int a[10]={1,2,3,4,5}未初始化部分会被初始化为0

不初始化:int a[10];  此时数组中是随机数,也称垃圾值。

数组的赋值:用for循环赋值或者用输入的方式一个一个赋值。

数组特点:
连续性:数组在内存中占据的空间是连续的。
有序性:数组的元素按顺序依次存放。
单一性:数组元素的类型是相同的。

数组元素的引用:
语法:数组名[下标] ,[] 此时表示数组下标运算 。
下标含义:
例如 a[0] ,下标表示相对于数组名偏移了几个元素,即偏移量。
数组越界:编译器不会检查数组越界,但程序员需要特别注意,避免越界访问导致程序错误。
注意:
对于 int a[10]; ,a 所代表的值是数组所占空间的首地址,a 所代表的数据类型是整个数组类型,即 int[10] 。类似于 int a; ,判断标识符所代表的数据类型时,去掉标识符,剩下的就是标识符对应的数据类型 。

3、练习:

1. 将数组int a[5] = {1, 2, 3, 4, 5}实现倒置

及  a[5] = {5,4,3,2,1}

#include <stdio.h>

int main()
{
	int i, j, temp;
	int a[5] = {1,2,3,4,5};

	for ( j=0; j<4; j++)
	{
		for ( i=0; i<4-j; i++)
		{
			temp = a[i];
			a[i] = a[i+1];
			a[i+1] = temp;
		}
	}

	for ( i=0; i<5; i++)
	{
		printf("%d ",a[i]);
	}

	printf("\n");

	return 0;
}

2. 从终端输入一个n 将数组int a[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9} 完成如下变化,并打印,操作方式如下: n=1   

9 1 2 3 4 5 6 7 8

n=2   

8 9 1 2 3 4 5 6 7

n=3   

7 8 9 1 2 3 4 5 6

#include <stdio.h>

int main()
{
	int i, j, temp, n;
	int a[9] = {1,2,3,4,5,6,7,8,9};
	printf("n = ");
	scanf("%d",&n);

	for ( j=0; j<9-n; j++)
	{
		for ( i=0; i<8; i++)
		{
			temp = a[i];
			a[i] = a[i+1];
			a[i+1] = temp;
		}
	}

	for ( i=0; i<9; i++)
	{
		printf("%d ",a[i]);
	}

	printf("\n");

	return 0;
}

用两层for循环实现对数组元素的循环移位操作,外层循环控制移位的次数,内层循环实现每次的移位操作。

当输入n=1时

第一次移位结束(j=0时)后我们可以我们可以发现数组中的元素变为

2 3 4 5 6 7 8 9 1

第二次移位结束(j=1时)后数组中元素变为

3 4 5 6 7 8 9 1 2

第七次移位结束(j=6时)后数组中元素变为

8 9 1 2 3 4 5 6 7

所以当第八次移位结束(j=7时)后数组中的元素变为

9 1 2 3 4 5 6 7 8 

通过这个规律我们就可以发现,内层循环每次都是将第一个元素往最后一位移动,所以当外层循环八次都完成了之后,原本最后一位的9就来到了第一位,其他元素都往后移了一位,所以我们可以通过j<9-n来控制外层循环的次数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值