c语言数组 一般有四种数组定义方式,以一维数组为例: //定义指定维数的数组 int arr[10]; //定义不指定维数的数组,数组维数有初化列表元素个数决定。 int arr[] = {1,2,4}; //定义指定维数的数组,初始化不完全时,系统将未初始化元素初始化为0 int arr[10] = {1,2}; //动态分配一个数组。下面分配了一个有10个元素的数组。 int *arr =(int *) malloc(10 * sizeof(int)); 对数组类型的说明应注意: 1)数组的类型实际上是数组元素的取值类型。 2)数组名的书写应符合标识符的书写规范。 3)数组名不能与其他变量名相同。 4)常量表达式表示数组元素的个数,但是其下标从0开始计算 5)不能在方括号中用变量来表示元素的个数,但是可以用符号常数或常量表达式。 6)允许在同一个类型说明中,说明多个数组和多个变量。数组元素的表示方法一般比较简单就是数组名[下标]来引用,先定义后用,如果是小数的话,直接自动取整。数组赋值分为:初始化赋值和动态赋值初始化赋值一般形式为: static 类型说明符 数组名[常量表达式]={值,值......}; static表示静态存储类型,c语言规定只有静态存储数组和外部数组才可做初始化赋值。 c语言对数组的初始化赋值还有几个规定: 1)可以只给部分元素赋值。 2)只能给元素逐个赋值,不能给数组整体赋值。 3)如不给可初始化的数组赋初值,在在数组说明中,可以不给出数组元素的个数。下面看一下多维数组主要看一下二维数组,其他的就可以用二维数组类推得到二维数组的类型说明的一般形式是:类型说明符 数组名[常量表达式1][常量表达式2]...;在c语言中二维数组是按行排列的二维数组的表示方法:数组名[下标][下标] 二维数组的初始化二维数组初始化也是在类型说明时给各下标变量赋以初值。 二维数组可按行分段赋值,也可按行连续赋值。二维数组的初始化还应该注意: 1)可以只对部分元素赋初值,未赋初值的元素自动取为0。 2)如对全部元素赋初值,则第一维的长度可以不给出。字符数组:用来存放字符变量的数组称为字符数组。 C语言允许用字符串的方式对数组作初始化赋值。例如: static char c[]={'c', ' ','p','r','o','g','r','a','m'}; 可写为: static char c[]={"C program"}; 或去掉{}写为: sratic char c[]="C program"; 用字符串方式赋值比用字符逐个赋值要多占一个字节, 用于存放字符串结束标志'\0'。上面的数组c在内存中的实际存放情况为: C program\0`\0'是由C编译系统自动加上的。由于采用了`\0'标志,所以在用字符串赋初值时一般无须指定数组的长度, 而由系统自行处理。在采用字符串方式后,字符数组的输入输出将变得简单方便。 除了上述用字符串赋初值的办法外,还可用 printf函数和scanf函数一次性输出输入一个字符数组中的字符串, 而不必使用循环语句逐个地输入输出每个字符。 void main() { static char c[]="BASIC\ndBASE"; printf("%s\n",c); } printf("%s\n",c); 注意在本例的printf函数中,使用的格式字符串为"%s", 表示输出的是一个字符串。而在输出表列中给出数组名则可。 不能写为: printf("%s",c[]); void main() { char st[15]; printf("input string:\n"); scanf("%s",st); printf("%s\n",st); } char st[15]; 本例中由于定义数组长度为15, 因此输入的字符串长度必须小于15,以留出一个字节用于存放字符串结束标志`\0`。 应该说明的是,对一个字符数组,如果不作初始化赋值,则必须说明数组长度。还应该特别注意的是,当用scanf函数输入字符串时,字符串中不能含有空格,否则将以空格作为串的结束符。