C 语言支持数组数据结构,它能够存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它每每被认为是一系列相同类型的变量。html
数组的声明并非声明一个个单独的变量,好比 number0(编号0)、number一、...、number99,而是声明一个数组变量,好比 numbers,而后使用 numbers[0]、numbers[1]、...、numbers[99] 来表明一个个单独的变量。数组中的特定元素能够经过索引访问。程序员
全部的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。数组
在 C 中要声明一个数组,须要指定元素的类型和元素的数量,以下所示:数据结构
type arrayName [ arraySize ]; 数据类型 数组[大于零的整数常量]
这叫作一维数组。arraySize 必须是一个大于零的整数常量,type 能够是任意有效的 C 数据类型。函数
”要声明一个类型为 double 的包含 10 个元素的数组 balance,声明语句以下:spa
double balance[10];
如今 balance 是一个可用的数组,能够容纳 10 个类型为 double 的数字。指针
在 C 中,您能够逐个初始化数组,也可使用一个初始化语句,以下所示:htm
double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};
大括号 { } 之间的值的数目不能大于咱们在数组声明时在方括号 [ ] 中指定的元素数目。blog
若是您省略掉了数组的大小,数组的大小则为初始化时元素的个数。所以,若是:索引
double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0};
您将建立一个数组,它与前一个实例中所建立的数组是彻底相同的。下面是一个为数组中某个元素赋值的实例:
balance[4] = 50.0;
上述的语句把数组中第五个元素的值赋为 50.0。全部的数组都是以 0 做为它们第一个元素的索引,也被称为基索引,数组的最后一个索引是数组的总大小减去 1。如下是上面所讨论的数组的的图形表示:
数组元素能够经过数组名称加索引进行访问。元素的索引是放在方括号内,跟在数组名称的后边。例如:
double salary = balance[9];
上面的语句将把数组中第 10 个元素的值赋给 salary 变量。下面的实例使用了上述的三个概念,即,声明数组、数组赋值、访问数组:
#include <stdio.h>
int main ()
{
int n[ 10 ];
/* n 是一个包含 10 个整数的数组 */
int i,j;
/* 初始化数组元素 */
for ( i = 0; i < 10; i++ )
{
n[ i ] = i + 100; /* 设置元素 i 为 i + 100 */
}
for (j = 0; j < 10; j++ ) /* 输出数组中每一个元素的值 */
{
printf("元素[%d] = %d\n", j, n[j] );
}
return 0;
}
当上面的代码被编译和执行时,它会产生下列结果:
元素[0] = 100 元素[1] = 101 元素[2] = 102 元素[3] = 103 元素[4] = 104 元素[5] = 105 元素[6] = 106 元素[7] = 107 元素[8] = 108 元素[9] = 109
在 C 中,数组是很是重要的,咱们须要了解更多有关数组的细节。下面列出了 C 程序员必须清楚的一些与数组相关的重要概念:
概念 | 描述 |
---|---|
多维数组 | C 支持多维数组。多维数组最简单的形式是二维数组。 |
传递数组给函数 | 您能够经过指定不带索引的数组名称来给函数传递一个指向数组的指针。 |
从函数返回数组 | C 容许从函数返回数组。 |
指向数组的指针 | 您能够经过指定不带索引的数组名称来生成一个指向数组中第一个元素的指针。 |
char *str="Hello"; char arrgs[]="Hello";
字符数组:
char *p=(char*)&arrgs == char *p=arrgs ; char *p=(char*)(&(arrgs[0])) == &arrgs == arrgs;
字符串指针:
char *p=(char*)&str != str; str==str[0] =='H'
得出结论字符数组的 首地址能够用 arrgs ,&arrgs,来表示而且它们相等,
可是指针&str和str是不一样的,当遇到字符串指针时候要注意处理方式;
在咱们没有明确数组的元素个数时,在程序中想知道数组单元个数可使用 sizeof(a)/sizeof(a[0]), sizeof(a) 是获得数组 a 的大小,sizeof(a[0]) 是获得数组 a 中单个元素的大小(所以能够没必要要是a[0],a[i]都行),eg:
#include<stdio.h> int main(int argc,char *grgv[]) { int a[]={1,2,3,4,5}; int b; b=sizeof(a)/sizeof(a[0]); printf("数组元素个数为:%d",b); return 0; }