C语言基本语法——数组
一、一维数组
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语言基本语法——数组的更多相关文章
- [语法]C语言中二维数组做输入参数
C语言中二维数组做输入参数时, 可以同时指定各维长度, 可以只指定第二维的长度, 不可以只指定第一维的长度, 不可以各维长度都不指定. 一句话总结:要指定至少指定第二维,都不指定是不行的. 具体栗子如 ...
- R语言基础:数组&列表&向量&矩阵&因子&数据框
R语言基础:数组和列表 数组(array) 一维数据是向量,二维数据是矩阵,数组是向量和矩阵的直接推广,是由三维或三维以上的数据构成的. 数组函数是array(),语法是:array(dadta, d ...
- Java语言基本语法
Java语言基本语法 一.标识符和关键字 标识符 在java语言中,用来标志类名.对象名.变量名.方法名.类型名.数组名.包名的有效字符序列,称为“标识符”: 标识符由字母.数字.下划线.美元符号组成 ...
- go语言中的数组切片:特立独行的可变数组
go语言中的数组切片:特立独行的可变数组 初看go语言中的slice,觉得是可变数组的一种很不错的实现,直接在语言语法的层面支持,操作方面比起java中的ArrayList方便了许多.但是在使用了一段 ...
- Go语言基础之数组
Go语言基础之数组 本文主要介绍数组(array)及它的基本使用. Array(数组) 数组是同一种数据类型元素的集合. 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化 ...
- C语言基础语法
#include <stdio.h> int main() { int age; printf("input your age"); scanf("%d&qu ...
- R语言基本语法
R语言基本语法 基本数据类型 数据类型 向量 vector 矩阵 matrix 数组 array 数据框 data frame 因子 factor 列表 list 向量 单个数值(标量)没有单独的数据 ...
- Smali语言基础语法
1.Smali语言基础语法-数据类型与描述符 smali中有两类数据类型:基本类型和引用类型.引用类型是指数组和对象,其它都是基础类型. 基本类型以及每种类型的描述符: Java类型 类型描述符 说明 ...
- 02. Go 语言基本语法
Go语言基本语法 变量.数据类型和常量是编程中最常见,也是很好理解的概念.本章将从 Go 语言的变量开始,逐步介绍各种数据类型及常量. Go 语言在很多特性上和C语言非常相近.如果读者有C语言基础,那 ...
随机推荐
- asyncio 自动跳出长时间堵塞的 task
https://www.cnblogs.com/ywhyme/p/10660411.html 的升级版 可以知道当前是卡在哪一个 task 甚至是多少行 import asyncio import o ...
- GDI 像素(5)
RGB 颜色 使用 RGB 宏可以创建一个由三个整数值(R.G.B)的 COLORREF 值. COLORREF RGB( BYTE byRed, // 红色值(R) BYTE byGreen, // ...
- 洛谷P1567 统计天数
题目背景 统计天数 题目描述 炎热的夏日,KC非常的不爽.他宁可忍受北极的寒冷,也不愿忍受厦门的夏天.最近,他开始研究天气的变化.他希望用研究的结果预测未来的天气. 经历千辛万苦,他收集了连续N(1& ...
- 「Poetize4」创世纪
在tyvj上怀疑爆栈了.....或许一定是我写挂了.以后调吧... UPD:bzoj上过了... 题解:https://blog.csdn.net/popoqqq/article/details/39 ...
- rtsp://admin:12345@192.168.1.198/mpeg4/main/ch01/av_stream
rtsp://admin:12345@192.168.1.198/mpeg4/main/ch01/av_stream
- 模仿学习小游戏外星人入侵-Python学习,体会“函数”编程
游戏类如下: # !/usr/bin/python # -*- coding:utf-8 -*- """ Author :ZFH File :alien.py Softw ...
- 记录magento通过csv文件与zip(图片压缩)上传产品到数据库的过程
1,前台使用input-file type按钮提交文件到magento指定的控制器,controllers获取.csv文件,因为magento是在zend框架上实现的,可以使用如下代码获取文件的上传信 ...
- [SharePoint2010开发入门经典]8集成业务线数据,使用业务联通服务
本章概要: 1.了解office business application 2.理解商务联通服务(BCS),如何使用BCS构建OBA 3.通过BCS使用SharePoint和办公集成技术
- [JAVA]比毫秒System.currentTimeMillis()更精确的时间戳(纳米级时间戳)
纳秒 ns(nanosecond):纳秒, 时间单位.一秒的10亿分之中的一个,即等于10的负9次方秒. 经常使用作 内存读写速度的单位,其前面数字越小则表示速度越快. 1纳秒=1000 皮秒 ...
- Linux中在主机上实现对备机上文件夹及文件的操作的C代码实现
需求描写叙述 编敲代码.完毕在主机上实现对备机上文件夹及文件的操作. 比如,主机为A,备机为B,要求编写的程序运行在A机上,该程序实如今B机上创建文件文件夹及复制文件的操作. 需求分析 我们先不考虑用 ...