本文主要对C语言中“数组”进行简单描述,同时引用一个小Demo来进行“数组”体验
数组的概念:用于存储多个相同类型数据的集合
- C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。
- 数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 numbers[0]、numbers[1]、...、numbers[99] 来代表一个个单独的变量。数组中的特定元素可以通过索引访问。
- 所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。
数组相关
数组: 存储多个同种类型的数据
1.数组的定义 : 定义一个数组的同时需要为他分配一定内存
系统为数组分配内存空间的时候 必须确定元素个数
int array[] = {1,2,3,4};
int array[4];
int array[4] = {1,2};
2.数组的内存;
int array[4];
array[0] = *(array+0) //数组与指针
array[1] = *(array=1)
数组名就是数组的首地址
3.数组的访问:①下标 0 - (n-1) ②指针
array[0] = 2;
array[1] = 23;
声明数组
- 在 C 中要声明一个数组,需要指定元素的类型和元素的数量,如下所示:
type arrayName [arraySize];
- 这叫做一维数组。arraySize 必须是一个大于零的整数常量,type 可以是任意有效的 C 数据类型。
- 例如,要声明一个类型为 double 的包含 10 个元素的数组 balance,声明语句如下:
double balance [10];
初始化数组
- C语言当中,可以逐个初始化数组,也可以使用一个初始化语句。大括号{}之间的值的数目不能大于我们在数组声明时在方括号[ ]中制定的元素个数
- 如果您省略掉了数组的大小,数组的大小则为初始化时元素的个数
int a[ ] = {1,2,4,7}; //四个元素
- 在定义时期明确指定数组的大小
int a[4];
- 数组元素的赋值
a[3] = 10; //将数组第 4(3+1)个元素进行赋值
访问数组元素
- 数组元素可以通过数组名称加索引进行访问。元素的索引是放在方括号内,跟在数组名称的后边
- 所有的数组都是以 0 作为它们第一个元素的索引,也被称为基索引,数组的最后一个索引是数组的总大小减去 1
数组训练之产生4个(不同)随机数 保存到数组 输出
随机数产生
利用rand()与srand()函数产生随机数,函数内容详情请看https://www.jianshu.com/p/3712e2096ba2
源代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//Demo - 产生4个(不同)随机数(1-9) 保存到数组 输出
int main(){
int array[4] = {};
srand(time(NULL));
//生成数组
//产生随机数的同时去比较是否重复
//如果重复就重新再产生一个随机数
//如果不重复就保存
//每次i的值正好可以用来判断已经有几个了
//1
//i = 1
// 2
for (int i = 0; i < 4; i++){
int temp = rand() % 4;
if (i == 0){//第一个 直接保存
array[i] = temp;
}else{
//判断前面是否已经存在了
int j = 0;
for(; j <i; j++){
//比较j对应的值和temp是否相同
if(array[j] == temp){
//重复了
printf("重复了:%d\n",temp);
break;
}
}
//判断是怎么出来的
if (j == i){
//将i前面的比较一遍都没发现重复的
//保存temp值
array[i] = temp;
}else{
//重复了
//重新回到当前这一次
i--;
}
}
}
//输出
for (int i = 0; i< 4; i++){
printf("%d ", array[i]);
}
return 0;
}
- 将随机数(1-9)存储至数组不难,简单利用for循环一个一个的导入数组
- 思维重点:逐步判断,从第二个随机数开始判断,利用if判断是否与前面任一数字重复,若一直无重复则导入数组,若有重复则将循环定义变量进行 “-1” 以此重新循环生成新的随机数并判断