初始化方式:
int a[3] ={10,9,6};
int a[3]={10,9};
int a[]={11,7,6};
int a[4]={[1]=11,[0]=7};
int a[3]={10,9};
int a[]={11,7,6};
int a[4]={[1]=11,[0]=7};
常见错误:
int a[];
int [4]a;
int a[b];
int [4]a;
int a[b];
a[10]=0;
a={10,11};
a[4]={10,9,8,5};//只有在定义时才可以全部初始化
a={10,11};
a[4]={10,9,8,5};//只有在定义时才可以全部初始化
内存分配:
存储内存分配,内存的分配是从高地址到低地址,数组元素是从低到高。
1、计算元素个数:
例:
int ages[]={10,11,12};
int count = sizeof(ages)/sizeof(int);
2、数组下标从0开始:
例:
int a[10]
a[10] =11;//错误写法
3、定义数组与数组元素的区别
定义数组 数组名前有类型修饰符 。
数组元素,不带类型修饰符。
数组与函数
1、 数组作为函数参数,可以省略元素个数
2、 数组作为函数参数,传递是整个数组的地址,修改函数形参数组元素的值,会影响到外面的实参数组
2、 数组作为函数参数,传递是整个数组的地址,修改函数形参数组元素的值,会影响到外面的实参数组
例 1:
void change(int array[])
{
//printf("array==%p ", array);
array[0] = 100;
}
void change2(int n)
{
n = 100;
}
int main()
{
int ages[6] = {10, 11, 10, 11, 10, 11};
//printf("ages==%p ", ages);
change(ages);
//change2(ages[0]);
printf("%d ", ages[0]);
return 0;
{
//printf("array==%p ", array);
array[0] = 100;
}
void change2(int n)
{
n = 100;
}
int main()
{
int ages[6] = {10, 11, 10, 11, 10, 11};
//printf("ages==%p ", ages);
change(ages);
//change2(ages[0]);
printf("%d ", ages[0]);
return 0;
}
例 2:
例 2:
int maxOfArray(int array[], int length)
{
// 数组当做函数参数传递时,会当做指针变量来使用,指针变量在64bit编译器环境下,占据8个字节
int size = sizeof(array);//在调用函数时,不可以这样求数组长度
printf("array=%d ", size);
return 0;
}
二维数组:
{
// 数组当做函数参数传递时,会当做指针变量来使用,指针变量在64bit编译器环境下,占据8个字节
int size = sizeof(array);//在调用函数时,不可以这样求数组长度
printf("array=%d ", size);
return 0;
}
二维数组:
初始化方式:
int a[3][4]={1,2,3,4,5,6};
int a[3][4]={{},{},{}};
int a[][5]={3,12,13,2,21,1};
int a[3][4]={{},{},{}};
int a[][5]={3,12,13,2,21,1};
注意错误:
int a[3][4];
a[3] ={};//下标最高为2