码迷,mamicode.com
首页 > 编程语言 > 详细

C语言基本语法——数组

时间:2018-04-26 18:28:44      阅读:289      评论:0      收藏:0      [点我收藏+]

标签:顺序   column   idt   语法   组成   lock   拷贝   赋值   color   

  一、一维数组

  1、什么是数组

  2、数组语法

  3、下标

  4、初始化

  5、数组名和数组首地址

  二、一维数组的应用

  1、数组的赋值与拷贝  

  2、数组的正反遍历

  3、随机数

  4、数组乱序

  5、数组的重复

  三、二维数组

  1、数组的数组

  2、二维数组的初始化

  3、二维数组的数组名

  四、二维数组的应用

  1、二维数组与二维表

  2、下标计算

 

一、一维数组

  1、什么是数组

  ? 数组是用来存储多条相同数据类型的数据结构。(容器)

  分析关键点:

-多条
-类型相同

-数组是数据的容器,而非数据本身
-数组中的每一个数据,叫元素,数组由多个元素(数据)组成。-数据下标(索引)来区分数据中的元素
-元素从数组的位置0开始

-元素可以使用数组变量名[下标]来得到具体的元素-数组中元素的个数叫数组的长度
-数组所占空间=元素的类型*数组的长度
-数组是一段连续的内存区域 指针
-数组变量指向的区域,是数组在内存中的首地址

  2、数组语法

  ? 定义数组: 元素类型 数组名[元素个数];

  int array[3];

  ? 访问元素: 数组名[下标]

  array[0] = 10;

  3、下标

  ? 下标是指访问数组元素时,中括号中的数字

  ? 下标不能越界,如果越界,可能会导致以下后果:

–程序直接崩溃
–莫明的改变了其他变量或数据空间的值
–什么事儿都没有

  4、初始化

  ? 赋使用的值

  int array2[3]={3,4,5};//依次给数组元素赋值
  int array4[3]={1,2};//如果赋值的个数少于数组 的长度,会 自动用0来填充后面的值

  ? 赋零值

  int array[3];//未初始化 可能存在垃圾时

  int array3[3]={0};//数组中每个元素是0

  5、数组名和数组首地址

  ? 数组名是一个地址,而且是不可变的地址

  ? 数组名不可以做为左值,就是不能出现在赋值语句的左边。初始化除外。

  ? 数组名是常量(指针)。 所以不能赋值

 

  二、一维数组的应用

  1、数组的赋值与拷贝  

  ? 数组的赋值

int array[10];
array[2] = 10;//将数组的第三个元素赋值为10

  ? 数组的拷贝

int array[10] = {1,2,3,4,5,6,7,8,9,0};

int num [10];
for (int i = 0; i < 10; i++)

  num[i] = array[i];

  2、数组的正反遍历

  ? 数组的正向遍历

int array[10] = {1,2,3,4,5,6,7,8,9,0};

for (int i = 0; i < 10; i++)

  printf(“%d ”,array[i]);

  ? 数组的反向遍历

for (int i = 9; i >= 0; i--)

  printf(“%d ”,array[i]);

  3、随机数

  ? rand()函数用于生成一个随机数

  ? srand()函数用于定义随机种子

int main() {

  srand((unsigned)time(0));   

  for (int i=0; i<10; i++) {

    int x = rand() % 100;

  } 

  printf("%d ", x);

  printf("\n");

  return 0;

}

  4、数组乱序

  ? 数组乱序是指将数组中的元素随机排列

int main() {

  int array[10] = {1,2,3,4,5,6,7,8,9,0};

  srand((unsigned)time(0));
  for (int i=0; i<10; i++) {

    int x = rand() % (10 - i) + i;

     int temp = array[i];
    array[i] = array[x];

  } 

  array[x] = temp;

  for (int i=0; i<10; i++)

    printf("%d ", array[i]);

  return 0;

}技术分享图片

  5、数组的重复

  ? 数组元素的重复是指将数组中存在相同的数组元素

 

  三、二维数组

  1、数组的数组

  ? 定义数组: 元素类型 数组名[元素个数] [元素个数];

int array[3][4];

  ? 访问元素: 数组名[下标] [下标]

array[1][2] = 10;

  2、二维数组的初始化

  ? 对应元素内容

int array2[3][2]={{1,2},{3,4},{5,6}};

  ? 整体赋值

int array2[3][2]={1,2,3,4,5,6};

  ? 依次赋值 自动补零

int array2[3][2]={1,2,3,4};

  3、二维数组的数组名

  ? 二维数组名同样是一个地址,而且是不可变的地址

  ? 二维数组名同样不可以做为左值,就是不能出现在赋值语 句的左边。初始化除外。

  ? 二维数组名是常量(指针)。 所以不能赋值

 

  四、二维数组的应用

  1、二维数组与二维表

  ? 二维数组其实是数组的数组
  ? 可以将二维数组理解为一张几行几列的二维表。

  2、下标计算

  ? 二维数组在内存中的存放方法是先存放列再存放行

eg:int array[3][4];

在内存的存放顺序是:

array[0][0]

array[0][1]

array[0][2]

array[0][3]

array[1][0]

array[1][1]

array[1][2]

array[1][3]

array[2][0]

array[2][1]

array[2][2]

array[2][3]

C语言基本语法——数组

标签:顺序   column   idt   语法   组成   lock   拷贝   赋值   color   

原文地址:https://www.cnblogs.com/yyt-hehe-yyt/p/8953648.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!