声明
- int a [10];
- 通过宏定义来指定数组长度
#define N
int a[N];
初始化
int a [10] = {1,2,3,4,5,6,7,8,9,0};
/* 除了赋值的几个,其他的都是0 */
int a [10] = {1,2,3,4,5,6} ;
/* 声明数组初始化为空是非法的,常用赋值为0 */
int a[10] = {0};
/* 指定初始化 */
int a[10] = {[2] = 21, [9] = 7};
常量数组
常量数组表示不可对数组内部数据修改,编辑器会对修改行为检查
const int a[3] = {1,2,3};
c语言中不会对数组进行越界检查
sizeof
获取数组或指针的大小
可以通过sizeof(a) / sizeof(a[0]) 来获取数组的长度;可以把其定义为宏来访问
#define SIZE ( (int) (sizeof(a) / sizeof(a[0])) )
疑问
int a[3] = {1,2,3};
int b[3] = {4,5,6};
*a = *b;
/* 为什么这样赋值,不能生效,正确写法如下 */
#include<string.h>
/* 将b指向内存的值复制到a指向的地址,但是是两个地址的引用,互不影响 */
memcpy(a, b, sizeof(a));