数组的进阶

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;
  } 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值