数组
- 什么是数组
- 数组和地址
- 多维数组
- 字符串数组
- 数组和指针
什么是数组
数组是一组数目固定、类型相同的数据项,数组中的数据项称为元素。
数组中的元素都是int 、 long 或其他类型。
下面的数组声明非常类似于声明一个含有单一数值的正常变量,但要在名称后的方括号中放置一个数。
long numbers[10];
如果两个数组的元素个数相同、类型也相同,这两个数组的类型就相同。
存储在数组中的每个数据项都用相同的名称访问,在这个例子中,该名称就是numbers。 要选择某个元素,可以在数组名称后的方括号内使用索引值。索引值就是从0开始的连续整数。
0是第一个元素的索引值,依次类推到9表示数组中的10个元素。
注意:如果在程序中使用的索引值超过了这个数组的合法范围,程序将不能正常运行,一定要认真检查,避免这种情况。
数组和地址
下面声明了一个包含四个元素的数组:
long number [4];
声明一个数组时,要给编译器提供为数组分配内存所需要的所有信息,包括值的类型和数组维。
数组占用的字节数就是元素个数乘以每个元素类型所需的字节数。
数组元素的地址是数组开始的地址。
#include<stdio.h>
int main(void)
{
double values[5] = {1.5,2.5,3.5,4.5,5.5};
printf("The size of the array is %zu bytes.\n",sizeof values);
return 0;
}
输出结果是40.
多维数组
二维数组可以声明如下:
float carrots[25][30];
三维数组是二维数组的扩展
double beans[4] [10][20];
这个语句声明的数组有800 个元素,可以把它看作存储豆类植物的产量,
豆类植物有四块田,每块田包含10行20列植物。根据需要,可以定义任意多维数组。
字符串数组
可以使用char 类型的二维数组存储字符串,数组的每一行都用来存储一个字符串。这样,就可以存储一整串字符串,通过一个变量名来引用它们,例如:
char sayings[3][32] = { "manners maketh man.","Many hands make light work.","Too many cooks spoil the broth ."};
数组和指针
#include<stdio.h>
#include<string.h>
int main(void)
{
char multiple[]="a string";
char *p=multiple;
int i=0;
for(i=0;multiple[i]!='\0';i++)
printf("multiple[%d]=%c *(p+%d)=%c \n",i,multiple[i],i,*(p+i));
return 0;
}
结果如下:
二维数组也是类似的表达形式。
要注意的是,数组名称是一个固定的地址,而不是一个指针,可以在表达式中使用数组名及其引用的地址,但不能修改它。
总之,数组在C语言中是个不可或缺的组成部分,会用数组很有必要。