1.数组的特性
(1)如果指定初始化器后面有更多的值,那么后面这些值警备用于初始化指定元素后面的元素
(2)如果再次初始化指定的元素,那么指定的初始化将会取代之前的初始化
(3)声明数组后,可以借助数组下标给数组元素赋值
2。数组进阶应用
(1)数组是如何存储的
利用sizeof(数组名)可以统计整个数组占用内存空间大小
可以计算数组元素个数
可以利用数组名,获取数组首地址
数组是有固定长度的,如果获取超出数组的长度,就称为数组越界,数组越界后会拿到不确定的值或程序报错
#include <stdio.h>
int main()
{
char arr_ch[5]={10,11,12,13,14};
printf("int类型的空间大小: %d\n",sizeof(char));
printf("num变量的地址:%#p\n",&arr_ch[0]);
printf("num变量的地址:%#p\n",&arr_ch[1]);
printf("num变量的地址:%#p\n",&arr_ch[2]);
printf("num变量的地址:%#p\n",&arr_ch[3]);
printf("num变量的地址:%#p\n",&arr_ch[4]);
long long arr_ll[5]={10,11,12,13,14};
printf("long long类型的空间大小: %d\n",sizeof(long long));
printf("long long变量的地址:%#p\n",&arr_ll[0]);
printf("long long变量的地址:%#p\n",&arr_ll[1]);
printf("long long 变量的地址:%#p\n",&arr_ll[2]);
printf("long long变量的地址:%#p\n",&arr_ll[3]);
printf("long long变量的地址:%#p\n",&arr_ll[4]);
int arr_int[5]={10,11,12,13,14};
printf("int类型的空间大小: %d\n",sizeof(int));
printf("arr_int[0]变量的地址:%#p\n",&arr_int[0]);
printf("arr_int[1]变量的地址:%#p\n",&arr_int[1]);
printf("arr_int[2]变量的地址:%#p\n",&arr_int[2]);
printf("arr_int[3]变量的地址:%#p\n",&arr_int[3]);
printf("arr_int[4]变量的地址:%#p\n",&arr_int[4]);
return 0;
}
(2) 通过函数调用数组,修改数组arr的值
#include <stdio.h>
/*
通过函数调用数组,修改数组arr的值
10 , 11 , 12改为
20 , 21, 22
*/
void modify_arr(int arr_int[], int n);
void modify(int a);
int main()
{
int arr[3]={10,11,12};
// printf("arr 的地址%#p\n", arr);
int i;
printf("更改前arr[1]=%d\n",arr[1]);
modify(arr[1]); //元素作为实参引用的时候,和变量操作一样
printf("更改后arr[1]=%d\n",arr[1]);
// modify_arr(arr, 3);
//遍历输出
// for(i=0; i<3; i++)
// printf("main() arr[%d]= %d\n",i,arr[i]);
//
return 0;
}
void modify(int a)
{
a=a+100;
printf("a = %d\n",a);
}
void modify_arr(int arr_int[], int n)
{
int i;
// printf("arr_int的地址%#p", arr_int);
for(i=0; i<n; i++)
arr_int[i]=arr_int[i]+10;
//遍历输出
for(i=0; i<3; i++)
printf("modify_arr() arr_int[%d]= %d\n",i,arr_int[i]);
}
(3)通过函数调用数组,求取平均值
#include <stdio.h>
/*
通过函数调用数组,求取平均值
考试分数:85.6 78.6 98.0 88.5
*/
float get_avg(float arr[],int n);
void updata(float arr_02[], int n);
int main()
{
float arr_score[4]={85.6,78.6,98.0,88.5};
float avg=0;
int i;
for(i=0; i<4; i++)
printf("原始数据 arr_score[%d]的分数为:%.1f\n",i,arr_score[i]);
avg=get_avg(arr_score,4);
printf("原始数据 为: "
updata(arr_score,4);
avg=get_avg(arr_score,4);
printf("更新后的平均数为: ")
for(i=0; i<4; i++)
printf("更新后数据arr_score[%d]的分数为:%.1f\n",i,arr_score[i]);
// printf("平均分为:%.1f\n",avg);
return 0;
}
//从键盘读入数据,进行分数更新
void updata(float arr_02[], int n)
{
int i;
printf("请输入4个分数,空格隔开,回车结束,\n更新源分数:");
for(i=0; i<n; i++)
scanf("%f",&arr_02[i]);
}
float get_avg(float arr[],int n)
{
float ret=0;
int i;
for(i=0; i<n; i++)
ret=ret+arr[i];
ret = ret/n;
return ret;
}