小白入门C语言之数组篇
作者:互联网
一、数组
- 数组(array)是一组数据类型相同的变量,可以存放一组数据,它定义的语法是:
数据类型 数组名[数组长度];
- 例如:
double money[20];
- money是一个数组,包含了20个元素,每个元素都一个double类型的变量,可以通过下标访问数组中元素(element),数组下标的编号从0开始,数组的第1个元素是money[0],第2个元素是money[1],以此类推,直到第20个元素money[19]。
- 给每个元素赋double类型的值,可以这样写:
money[0] = 10.55;
money[1] = 32.54;
money[2] = 2055.65;
……
money[19] = 2055.65;
- 注意
①、定义数组的时候,数组的长度必须是整数,可以是常量,也可以是变量。
②、数据的下标也必须是整数,可以是常量,也可以是变量。
③、使用数组元素和使用同类型的变量一样。
scanf("%lf", &money[4]); // 把一个值读入数组的第5个元素
- 数组的类型可以是任意数据类型。
int no[22]; // 可储存22个int类型整数的数组
char actors[26]; // 可储存26个字符的数组
double big[500]; // 可储存500个double类型整数的数组
二、占用内存的大小
- 我们已经知道如何获取单个变量占用内存大小的方法。
#include<stdio.h>
#include<string.h>
int main()
{
int i;
printf("sizeof(i) = %d\n", sizeof(i));//sizeof(i) = 4
printf("sizeof(int) = %d\n", sizeof(int)); //sizeof(int) = 4
}
- 数组是有多个变量组成,占用内存总空间的大小为多个变量占用的内存空间之和,用sizeof(数组名)就可以得到整个数组占用内存的大小,如下:
int arr[10]; // 定义一个整型数组变量
printf("sizeof(arr)=%d\n",sizeof(arr));// 输出结果:sizeof(arr)=40
三、数组的初始化
- 采用memset函数对数组进行初始化,如下:
#include<stdio.h>
#include<string.h>
int main()
{
int arr[10];
int i;
memset(arr,0,sizeof(arr));
for(i=0;i<10;i++){
printf("arr[%d]=arr[%d]\n",i,arr[i]);
}
}
- 运行结果:
- 第一个参数是数组名,第二个参数填0,第三个参数是数组占用的内存总空间,用sizeof(变量名)获取。
四、在for循环中数组
#include<stdio.h>
#include<string.h>
int main(){
int i = 0;
int total = 5;
double money[total];
double sum = 0;
memset(money,0,sizeof(money));
for(i = 0; i<total;i++){
printf("请输入第%d个钱包的钱数:",i+1);
scanf("%lf",&money[i]);
sum = sum + money[i];
}
printf("钱包平均有:%lf元\n",sum/total);
}
- 运行结果:
五、二维数组
- 二维数组定义的语法是:
数据类型 数组名[第一维的长度][第二维的长度];
- 在我们现实生活中,二维数组到处都是,例如军队(troops)排列,一共有5个小组,每组4人,如果要指明某位战士,必须同时指明该战士的小组编号和他在组内序号。
char troops[5][4];
troops[0][0] troops[0][1] troops[0][2] troops[0][3]
troops[1][0] troops[1][1] troops[1][2] troops[1][3]
troops[2][0] troops[2][1] troops[2][2] troops[2][3]
troops[3][0] troops[3][1] troops[3][2] troops[3][3]
troops[4][0] troops[4][1] troops[4][2] troops[4][3]
- 也可以将二维数组看成一个坐标系,有 x 轴和 y 轴,要想在一个平面中确定一个点,必须同时指定 x 和 y 值。
- 二维数组的初始化也是用memset,例如:
memset(girl,0,sizeof(girl));
- 练习计算二维数组中的平均体重:
#include <stdio.h>
#include <string.h>
int main()
{
int ii=0; // 用于组别循环的计数器
int jj=0; // 用于人数循环的计数器
int class=2; // 小组总数,初始化为2
int total=3; // 每个组人数的总人数,初始化为3
double weight[class][total]; // 定义二维数组,存放体重
double sum[class]; // 定义一维数组存放体重的和
memset(weight,0,sizeof(weight)); // 初始化数组为0
memset(sum,0,sizeof(sum)); // 初始化数组为0
// 采用两个循环,第一级循环为小组数,第二级循环为人数个数
for (ii=0;ii<class;ii++)
{
for (jj=0;jj<total;jj++)
{
printf("请输入第%d组第%d个的体重:",ii+1,jj+1);
scanf("%lf",&weight[ii][jj]); // 接受从键盘输入的体重
sum[ii]=sum[ii]+weight[ii][jj]; // 计算小组体重的和
}
}
for(ii=0;ii<class ; ii++){
printf("第%d组人数的平均体重为:%f\n",ii+1,sum[ii]/5);
}
}
- 运行结果:
六、字符串
1、字符串的概念
- 字符串就是一个以空字符’\0’结束的字符数组,是一个特别的字符数组,这是约定,是规则。
- 空字符’\0’也可以直接写成0。
- 因为字符串需要用0结束,所以在定义字符串的时候,要预留多一个字节来存放0。
char name[21]; // 定义一个最多存放20个字符或10个汉字的字符串
2、字符串的初始化
- 字符串是数组,当然可以用初始化数组的方法来初始化字符串。
char strname[21];
memset(strname,0,sizeof(strname));
3、字符串的赋值
- 如果想在strword中存入字符串“hello”,可以用strcpy函数,也可以采用以下代码:
strcpy(strword,"hello");
// 或者用以下代码
char strword[21];
memset(strword,0,sizeof(strword));
strword[0]='h';
strword[1]='e';
strword[2]='l';
strword[3]='l';
strword[4]='o';
strword[5]='\0'; // 或者 strword[5]=0;
4、关于字符串结束符0的讨论
#include <stdio.h>
#include <string.h>
int main()
{
char name[3];
memset(name,0,sizeof(name));
name[0] = 'a';
name[1] = 'b';
name[2] = 'c';
printf("name=%s=\n",name);
}
- 运行结果:
- 可以看到,输出abc之后,有乱码,并且每次执行程序输出的结果不可预知。
您可能还会问,如果字符串以0结束了,但是后面的内容并不是0,怎么办?后面的内容将被丢弃。
5、字符串数组
- 以0结束的一维字符数组是一个字符串。
char strname[21]; // 可以存放20个字符的字符串
memset(strname,0,sizeof(strname));
strcpy(strname,"我真的可以存十个汉字");
- 给一维字符数组加上一维,就是字符串数组了。
char strname[10][21]; // 10个字符串,每个字符串可以存放20个字符
memset(strname,0,sizeof(strname));
strcpy(strname[0],"坦已");
strcpy(strname[1],"褒似");
strcpy(strname[2],"西施");
strcpy(strname[3],"王昭君");
strcpy(strname[4],"貂婵");
……
strcpy(strname[9],"陈圆圆");
#include<stdio.h>
#include<string.h>
int main(){
char strword[51];
memset(strword,0,sizeof(strword));
strcpy(strword,"你好!世界。");
int i;
for(i=0;;i++){
if(strword[i] == 0) break;
}
printf("len is %d\n",i);
}
- 运行结果:
标签:troops,strword,int,C语言,小白,strname,数组,sizeof,入门 来源: https://blog.csdn.net/qq_44096670/article/details/114839374