C构造类型 数组
一、数组是什么
一组有个固定大小、相同数据类型的数据的集合。
数组可以分为:一维数组、二维数组、三维数组、...(维数不止一维:多维数组)
表格 : 行和列(二维数组)
二、一维数组
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)、用{}括起来,分行给他赋值
最新文章
- XSS 前端防火墙 —— 无懈可击的钩子
- SqlServer按时间自动生成生成单据编号
- [Machine-Learning] 熟悉Matlab
- Jstorm可靠性分析
- C# iis 错误配置信息( CS0016: 未能写入输出文件 )
- 左求值表达式,堆栈,调试陷阱与ORM查询语言的设计
- ubuntu下使用nginx部署Laravel
- python __del__
- SQL to_char,to_date日期字符串转换问题
- centos7 mysql 5.6.30 默认配置文件
- List转换成JSON对象报错(一)
- Java 8中用法优雅的Stream,性能也";优雅";吗?
- ehcache缓存配置与参数说明
- plsql developer 10注册码----亲测截止2017年5月6可用
- SDN期末
- NetBeans 插件开发简介
- LVS负载均衡之持久性连接介绍(session篇)
- 利用Python编写Windows恶意代码!自娱自乐!勿用于非法用途!
- 【数据库】SQL经典面试题 - 数据库查询 - 子查询应用二
- 【final】140字互评②
热门文章
- Flink1.9.2源码编译和使用
- nacos 作为配置中心使用心得--配置使用
- 4G工业路由器的信号强度应该怎么保证呢?
- “wget: 无法解析主机地址”的解决方法
- Django项目之打分系统
- [Luogu P1122]最大子树和 (简单树形DP)
- MarkDown及Typora文本编辑器
- 深入探索Spring Data JPA, 从Repository 到 Specifications 和 Querydsl
- python爬虫07BeautifulSoup
- offsetWidth与offsetHeight