一、数组是什么

一组有个固定大小、相同数据类型的数据的集合。

数组可以分为:一维数组、二维数组、三维数组、...(维数不止一维:多维数组)

表格 : 行和列(二维数组)

二、一维数组

1、一般形式

类型说明符 数组标识符[常量表达式];

类型说明符:数组中所有元素的类型

数组标识符 :数组名,跟变量的命名规则一样。字母、数字、下划线

[]: 下标运算符

常量表达式:数组元素的个数,也就是数组的长度。只能是常量,不能是变量。

符号常量 #define LENGTH  10

2、访问数组里面每一个元素

通过下标访问得到每个元素的值。array[0]

3、一维数组的初始化

有几种方法:

(1)用花括号{} 直接赋值

char arr[4] = {'a','b','c','d'};//初始化列表

arr[0]='a',arr[1]='b',arr[2]='c',arr[3]='d'

(2)只给部分元素赋值,没有赋值的元素默认赋值为0

long arr[6] = {8,45,12,56};

short arr[10] = { 0 };

//遍历

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

{

printf("arr[%d]=%ld\n",i,arr[i]);

}

(3)对全部元素初始化的时候,不指定数组元素的长度

short arr[] = {1,2,3,4,5,6,7,8};

编译器会根据我们给定的初始化元素的个数来定义这个数组的长度

数组越界:arr[8],arr[9] 编译器不会报错,

数组名:是一个指针常量,指向这个数组第一个元素的地址,数组的首地址。

4字符数组的初始化

char str[12] = "Hello World";//字符常量看做初始化列表

printf("%s\n",str);

4、数组元素赋值

char str[11] = {'H','e','l','l','o',' ','W','o','r','l','d'};

str[0] = 'W';

从键盘输入,为每一个元素赋值

int arr[5];

scanf("%d",&arr[0]);

scanf("%d", &arr[1]);

scanf("%d", &arr[2]);

scanf("%d", &arr[3]);

scanf("%d", &arr[4]);

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

{

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

}

使用for循环:

int arr[5];

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

{

scanf("%d", &arr[i]);

}

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

{

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

}

/////

int arr[5];

scanf("%d", arr);

5、数组所占内存空间的大小

一段连续的内存空间

数组所占的内存空间大小 = 数组类型 * 数组的长度;

printf("%d\n",arr);//是一个指针常量,指向这个数组第一个元素的地址,数组的首地址。

//sizeof()

printf("%d\n",sizeof(arr));//整个数组的大小

数组的长度:

sizeof(arr) /sizeof(int);

6、const常量

不能够修改的量,一定要初始化。

const int i=10;

int arr[i];//不行

//const int i = 12;

//char arr[i] = {0};

三、多维数组

超过一维的就是多维数组,二维数组、三维数组....

1、二维数组

一般形式:

数据类型 数组名[常量表达式1][常量表达式2]

int arr[10];//一位数组

char arr[2][5];//二维数组

float arr[2][3][5];//三维数组

double ar[2][3][4][5];//四维数组

在内存中:一块固定大小、连续的内存空间

2、初始化

(1)、直接写在括号里面、按顺序排列

char arr[2][5]={0,1,2,3,4,5,6,7,8,9};

int arr[2][2][5]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};

打印一个二维数组

(2)、只给部分元素赋值,其余没有赋值的默认赋值为0

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

(3)、可以省略行下标,但是不能省略列下标

int arr[][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

(4)、用{}括起来,分行给他赋值

最新文章

  1. XSS 前端防火墙 —— 无懈可击的钩子
  2. SqlServer按时间自动生成生成单据编号
  3. [Machine-Learning] 熟悉Matlab
  4. Jstorm可靠性分析
  5. C# iis 错误配置信息( CS0016: 未能写入输出文件 )
  6. 左求值表达式,堆栈,调试陷阱与ORM查询语言的设计
  7. ubuntu下使用nginx部署Laravel
  8. python __del__
  9. SQL to_char,to_date日期字符串转换问题
  10. centos7 mysql 5.6.30 默认配置文件
  11. List转换成JSON对象报错(一)
  12. Java 8中用法优雅的Stream,性能也&quot;优雅&quot;吗?
  13. ehcache缓存配置与参数说明
  14. plsql developer 10注册码----亲测截止2017年5月6可用
  15. SDN期末
  16. NetBeans 插件开发简介
  17. LVS负载均衡之持久性连接介绍(session篇)
  18. 利用Python编写Windows恶意代码!自娱自乐!勿用于非法用途!
  19. 【数据库】SQL经典面试题 - 数据库查询 - 子查询应用二
  20. 【final】140字互评②

热门文章

  1. Flink1.9.2源码编译和使用
  2. nacos 作为配置中心使用心得--配置使用
  3. 4G工业路由器的信号强度应该怎么保证呢?
  4. “wget: 无法解析主机地址”的解决方法
  5. Django项目之打分系统
  6. [Luogu P1122]最大子树和 (简单树形DP)
  7. MarkDown及Typora文本编辑器
  8. 深入探索Spring Data JPA, 从Repository 到 Specifications 和 Querydsl
  9. python爬虫07BeautifulSoup
  10. offsetWidth与offsetHeight