数组是一组相同类型数据的集合,也是一组相同类型变量的集合,同时数组本身也是一种数据类型。
在需要定义多个相同类型的产量时,按照以往的方法一个一个定义就相当繁琐,而数组可以批量处理多个数据。
一、一维数组
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循环实现对数组元素的循环移位操作,外层循环控制移位的次数,内层循环实现每次的移位操作。
标签:10,初始化,int,数据类型,嵌入式,学习,数组名,数组,C语言 From: https://blog.csdn.net/weixin_63556308/article/details/140780262