关于数组
分为一维数组、二维数组、字符数组
1、c语言不允许对数组的大小做动态定义,即数组的大小不依赖于程序运行过程中变量的值,例如:
int n;
scanf("%d",&n);
int a[n];
这样是不行的
2、c语言规定只能逐个引用数组元素而不能一次引用整个数组
下标可以是整型常量或整型表达式,例如:a[0],a[2*3]
元素个数小于数组长度,则其余元素自动为0
一维数组:在对全部元素赋初值时,可以不指定数组长度,例如:int a[]={1,2,3,4,5} (系统会自动定义a数组长度为5
二维数组初始化:
1) 分行给二维数组赋初值:int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
2) 将所有数据写在一个花括号:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
3) 对部分元素赋初值:int a[3][4]={{1},{5},{0,9}}; 分行,其余元素自动为0
也可以只对几行元素赋初值:int a[3][4]={{1},{5,6}};
4) 如果对全部元素赋初值,定义时第一维长度可以省略,第二维长度不能省略:int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12} 或者:int a[][4]={{1,2,3,4},{5},{}}
即,可以省略行数,不能省略列数
3、字符数组中,如果元素个数小于数组长度,则其余元素自动为空字符('\0')
字符数组就是把数字换成字符,其余规则与一般数组相同:char c[]={'u','f','o'}
在C语言中,将字符串作为字符数组来存放。字符串结束标志 '\0',字符串结束标志之前的长度为有效字符串长度
字符数组初始化的另一种方法是采用字符串常量来初始化,例如:char c[]={"i am happy"}; 也可以省略花括号直接写成char c[]="i am happy";数组长度不是10,而是11,因为字符串敞亮的最后由系统加上一个'\0'
char c1[3]={'a','s','d'},结尾没有'\0';而char c2[3]="asd"会报错,此时会自动加'\0',实际长度变成了4
注:参考文章 ,对部分做了精简