数组定义
<类型> 变量名称[元素数量]
int grades[100];
double weight[20];
元素数量必须是整数
c99之前元素的数量必须是和编译时刻确定的字面量
数组是一个容器
其中所有的元素都是相同的数据类型
一旦确立,数组的大小就不能改变
数组在内存中内存是连续依次排列的
从0开始计数
不可以越过 [下标-1]
及a[13]中可以表示的数是a[0]到 a[12]
数组还可以表示为
int a[]={1,45,48,54,13,19,4}
及对数组的每一个单元直接初始化,且编译器默认这个数组有7个单元
如果
int a[7]={5}
则数组除第一个数是5以外,所有的数都是0
如果需要全部初始化为0
可以这样写
int a[13];
int i;
for(i=0;i<13;i++){
a[i]=0;
}
也可以这样写
int a[13]={0};
另外,c99中数组还可以这样表示
int a[10]={
[0]=2,[2]=2,3,
};
这样初始化的结果就会是
a[0]=2,a[2]=0,a[3]=3剩下的数都是0
数组的大小
可以用 sizeof(a)表示数组a所占的大小
sizeof(a[0])表示a[0]也就是数组的一位所占大小
用 sizeof(a)/sizeof(a[0]);表示这个数组一共有几个单元,
也就是一共能存几个数
数组的赋值
我们不能直接拿一个数组将它的值赋给另外一个数组
必须一个一个的赋值,当然也可以写一个循环来进行赋值
先来个简单点的例子
比如超市计算消费金额的时候,输入相应的数字就可以累加相应的价格,然后输入0作为结束条件
#include<stdio.h>
int main()
{
int number;
int total=0;
int a[]={0,60,75,83,89,71,43,};/*数组的编号是从0开始的,我们在a[0]这个位置赋值为0就能使数组的数字与switch的数字对齐,还比较美观*/
do{
scanf("%d",&number);
/*switch(number){
case 1:total+=60;break;
case 2:total+=75;break;
case 3:total+=83;break;
case 4:total+=89;break;
case 5:total+=71;break;
case 6:total+=43;break;
}*/
total+=a[number];//数组最大的好处就是可以将多个变量写成一个集合,使得程式变得简单,虽然可读性没有switch或者if的好
}while(number!=0);
printf("消费总金额为%d",total);
return 0;
}
在上一遍笔记中有提到一个叫丢骰子的练习,这次是统计投6000次骰子每个数字出现的次数
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
srand(time(0));
int count[6]={0};
int i;
for(i=0;i<6000;i++){
int dice;
int j;
dice=rand()%6+1;
/*switch(dice){
case 1:count[0]++;break;
case 2:count[1]++;break;
case 3:count[2]++;break;
case 4:count[3]++;break;
case 5:count[4]++;break;
case 6:count[5]++;break;
}*/
/*for(j=1;j<=6;j++){
if(dice==j){
count[j-1]++;
}
}*/
count[dice-1]++;//可以吧for省略的原因是只有当dice=j的时候才会运行下面的程序,刚好每一个for也只有一个j会等于dice
}
for(i=0;i<6;i++){
printf("%d,%d\n",i+1,count[i]);//数组输入输出都得一个一个的输出
}
return 0;
}
明天多学一些数组的例子
下面是单片机的一些基础知识
单片机的内部资源
1.flash 程序存储空间(以前是ROM)
2.RAM(数据存储空间,内存),断电后数据丢失,运行速度快,能无限次读取
3.SFR 特殊功能计算器
单片机最小系统
用最少的元器件搭建的单片机可以工作的系统
三要素
电源电路 晶振电路 复位电路
单片机C语言sfr声明
sfr P0 =0x80;
sfr TCON=0x88;
sbit IT0=TCON^0;
sbit LED=P0^0;
在使用单片机的特殊功能计算器时,需要对特殊功能计算器进行声明
这个和C语言的函数是一样的
和函数一样这些特殊功能计算器也有它自身的头文件
如stc80c82单片机就可以用
#include<reg52.h>
将它的特殊功能计算器包含在内
如果这个头文件内不包含我们所需的特殊功能计算器就可以通过sfr声明来使用
sbit声明就相当于给特殊功能计算器进行命名
今天就这样,睡觉去
|