C语言数组

0:数组是固定的长度,定义了就不能变了,数组的长度必须是一个常量,注意不能是一个变量。

简单的来说C语言的数组就是一旦定义不可修改,定义的时候长度就固定了。

PS:java 里面的定义是这样的,不可以定义的时候是不可以制定长度的,必须是在分配的时候才可以的。

1:一般都是通过宏定义来定义数组的大小的。


2:

//数组的初始化:JAVA 是不支持的,因为不可以在声明的时候制定长度
	int a[5]={1,2,3,4,5};
	//下面的这种定义也是可以,部分初始化,JAVA 是不支持的,因为java 是在初始化的时候才知道长度的
	int b[5]={1,2,3};
	//如果为全部元素初始化,可以省略长度,其实这种就是Java 的用法,java 也是可以这么声明和初始化的int[] args,int args[]
	int x[]={1,2,3};

3: C语言计算一个数组的字节长度可以直接通过sizeof,如果是数组的长度呢,需要用字节长度除以该数组的类型字节长度

java里面只要一个b.length的属性就可以了。

	数组的长度:
	//C语言计算一个数组的字节长度可以直接通过sizeof,如果是数组的长度呢,需要用字节长度除以该数组的类型字节长度
	//java里面只要一个b.length的属性就可以了。
	int sizeb = sizeof(b);
	printf("b数组字节长度=%d\n",sizeb);
	printf("size of int =%ld\n",sizeof(int));
	printf("b数组的长度为%d\n",sizeb/sizeof(int));


4://声明的时候长度一定要是常量,但是访问的时候[]里面可以是变量或者是表达式

//声明的时候长度一定要是常量,但是访问的时候[]里面可以是变量或者是表达式
	int ii = 2;
	printf("a[%d]=%d\n",ii,a[ii]);


5: //数组越界,可能是出现其他的数字结果,所以越界是很危险的,数组a的长度是5,访问a[6]就会出现越界
	//数组越界,可能是出现其他的数字结果,所以越界是很危险的,数组a的长度是5,访问a[6]就会出现越界
	printf("越界的数组a[6]=%d",a[6]);


6:函数中包含数组的参数:

//输出数组的每一个元素,因为不知道a到底多长,所以不能够在声明的时候就写入长度,只能是int a[]
void printArrayItems(int a[],int length){
	for(int i=0;i<length;i++){
		printf("第%d个元素为%d\n",i,a[i]);
	}
}
//调用的地方
int a[5]={1,2,3,4,5};
printArrayItems(a,5);

7: 

//输入成绩然后输出
	int scores[5];
	for(int i=0;i<5;i++){
		printf("请输入数学成绩\n");
		scanf("%d",&scores[i]);
	}
	printf("您输入的成绩是:\n");
	printArrayItems(scores,5);

8: 

//求平均成绩:
	int classScores[]={100,100,98,100,98};
	int sum = 0;
	int kemushu = sizeof(classScores)/sizeof(int);//求数组长度
	for(int i=0;i<kemushu;i++){
		sum=sum+classScores[i];
	}
	printf("平均数=%f",(double)sum/kemushu);



++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

#include <stdio.h>

//一般都是通过宏定义来定义数组的大小的。
#define LEN 10

//输出数组的每一个元素,因为不知道a到底多长,所以不能够在声明的时候就写入长度,只能是int a[]
void printArrayItems(int a[],int length){
	for(int i=0;i<length;i++){
		printf("第%d个元素为%d\n",i,a[i]);
	}
}

int main(int argc,const char * argv[]){
	/**
	简单的来说C语言的数组就是一旦定义不可修改,定义的时候长度就固定了。
	PS:java 里面的定义是这样的,不可以定义的时候是不可以制定长度的,必须是在分配的时候才可以的。
	*/
	int classes[50];
	/*
	下面的这种定义是不可以的,因为数组创建的时候必须是固定的
	int len = 5;
	int a[len];
	*/
	
	//一般都是通过宏定义来定义数组的大小的。
	int len[LEN];
	
	//数组的初始化:JAVA 是不支持的,因为不可以在声明的时候制定长度
	int a[5]={1,2,3,4,5};
	//下面的这种定义也是可以,部分初始化,JAVA 是不支持的,因为java 是在初始化的时候才知道长度的
	int b[5]={1,2,3};
	//如果为全部元素初始化,可以省略长度,其实这种就是Java 的用法,java 也是可以这么声明和初始化的int[] args,int args[]
	int x[]={1,2,3};
	
	//数组的存储,可以通过sizeof来查看长度,但是这个长度是所占用的字节长度,一个int 类型的是4个字节,所以如果数组长度是5,那么就是20个字节
	int sizex = sizeof(x);
	printf("x数组字节长度=%d\n",sizex);
	
	int sizea = sizeof(a);
	printf("a数组字节长度=%d\n",sizea);
	
	
	//C语言计算一个数组的字节长度可以直接通过sizeof,如果是数组的长度呢,需要用字节长度除以该数组的类型字节长度
	//java里面只要一个b.length的属性就可以了。
	int sizeb = sizeof(b);
	printf("b数组字节长度=%d\n",sizeb);
	
	printf("size of int =%ld\n",sizeof(int));
	
	printf("b数组的长度为%d\n",sizeb/sizeof(int));
	
	
	//数组的访问,
	//表面上看是四层楼,还有一个地下室,这个解释666
	//C语言数组最大的小标,例如如果数组是5个,是长度减去1
	
	//数组的访问快,但是删除慢
	
	//声明的时候长度一定要是常量,但是访问的时候[]里面可以是变量或者是表达式
	int ii = 2;
	printf("a[%d]=%d\n",ii,a[ii]);
	
	//数组越界,可能是出现其他的数字结果,所以越界是很危险的,数组a的长度是5,访问a[6]就会出现越界
	printf("越界的数组a[6]=%d\n",a[6]);
	
	printArrayItems(a,5);
	
	
	//输入成绩然后输出
	int scores[5];
	for(int i=0;i<5;i++){
		printf("请输入数学成绩\n");
		scanf("%d",&scores[i]);
	}
	printf("您输入的成绩是:\n");
	printArrayItems(scores,5);
	
	
	//求平均成绩:
	int classScores[]={100,100,98,100,98};
	int sum = 0;
	int kemushu = sizeof(classScores)/sizeof(int);//求数组长度
	for(int i=0;i<kemushu;i++){
		sum=sum+classScores[i];
	}
	printf("平均数=%f",(double)sum/kemushu);
	
	
	return 0;
}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值