数组
特点
元素个数确定;所有元素类型相同
定义
1 | int numbers[10]; |
初始化
不初始化,元素值为无意义值;部分赋值,其它的为0
不允许用一个数组赋值另一个数组
1 | 1. |
指定初始化项目(C99)
1 | int months[5] = {[4]=30}; |
设置为只读
1 | const int months[5] = {31, 29, 31,30,31} |
sizeof
当定义时是没有给出数组明确大小;可以用sizeof
1 | int months[] = {1, 2, 3, 4}; |
访问
采用索引对应每一个元素
1 | numbers[0]; |
注意:索引不能超过正确范围;超过编译器不能检查出错误,有时可能程序能够正常运行,但会结果会出错,最糟糕会导致计算机锁死或重启
多维数组
1 | int arr[2][2]={{1,2},{1,2}} |
二维数组
分行给二维数组赋值
1 | int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; |
1 | int a[3][3]={1,2,3,4,5,6,7,8,9}; |
对部分元素赋值
1 | int a[3][3]={{1},{4,5},{}}; |
在不定义1维的长度下,给出二维长度
1 | int a[][3]={{1,2,3},{4,5,6},{7,8,9}}; |
1 | int a[][3]={1,2,3,4,5,6,7,8,9}; |
1 | int a[][3]={{1,2},{4,5,6},{7}}; |
访问
1 | a[1][2]; |
1 | a[2]变成*(a+2); a[2][3]变成 (*(a+2))[3]再可以变成 *(*(a+2)+3) |
结构数组
1 | struct book library[5]; |
指针数组
在没学链表之前可以这么做
可以避免一次malloc申请一片连续的存储空间
1 | struct book * fp; |
1 |
|