C语言学习——数组学习

1数组

1.1概念

一组数据的类型相同的元素集合
(1)数据类型相同
(2)地址连续

1.2定义

存储类型 数据类型 数组名[元素个位数];

存储类型:存储类型有:auto 、static、extern、register
数据类型:数据类型指数组中每个元素的数据类型。去掉变量名是数组的数据类型。
(数据类型大小不一样,数据类型不一样)
//用:
sizeof(int [n]);
sizeif(变量名);
//可以求出数组的数据类型
数组名作用:
(1)数组名代表数组首元素的地址
(2)数组名代表整个数组
元素个数:
必须是一个确定的数(常量)
int n = 5;
int arr[n]
n的值不能更改,因为定义数据时给数据分配了内存空间,修改元素个数会产生越界。

1.3数组的初始化

1.3.1 局部数据不初始化
对于普通局部数组,如果定义时不初始化,数组的元素值不确定
1.3.2 static数组不初始化
对于static修饰的数据,如果定义时不初始化数据,数组的元素的值全部为0
1.3.3 全局数组不初始化
对于全局数组不初始化,如果定义时不初始化,数组的元素的值全部为0
1.3.4 部分初始化
对于数据部分初始化,未初始化的元素值为0
部分初始化有以下几种方法:
a[10] = {12, 15, 18, 8,} //初始化了0-3四个元素,后面的元素值默认为0
a[10] = {[2] = 15, [5] = 8} //初始化2和5元素,未初始化的元素默认为0,初始化时顺序改变也不会产生影响
a[] = {[0] = 1,[5] = 15, [19] = 4},如果没有给定数组长度,会默认数据长度是20,即元素下表最大为19
1.3.5 全部初始化
进行全部初始化时元素的长度可以省略。可以分别对每个元素进行赋值
1.3.6 数组全部初始化为0
a[10] = {0};

1.4数组的访问

数组名[下标] //可以访问数组元素的值,下标必须从0开始

1.5输入输出

数组输入输出时常用for循环

1.6冒泡排序

思想:从左至右两两依次比较,如果前一个数比后一个数大的话就交换位置,否则,不变

2、字符数组

字符数组的本质是字符串(以‘\0’作为结束符)
存储类型 数据类型 数组名[元素个数];
数组个数要给‘\0’留一个元素位置
char arr[6] = {“hello”}; //有个5个字符和一个’\0’

2.1字符数组的输入输出

字符串的输出格式为%s
用函数puts(数组名);
功能:将数组中的字符串打印出来,会自动添加换行符
注意:遇到’\0’结束

2.2字符串的输入

gets(数组名);
功能:将键盘输入的字符串保存到数组中,会自动在末尾添加’\0’
注意gets函数不会进行越界检查,输入的时候注意不要越界

注意:
1、scanf是以空格、回车、Tab键作为结束符,而gets是以回车作为结束符
缓冲区:
gets输入完成会自动清空缓冲区
scanf输入完成后,缓冲区会遗留空格、回车、Tab键
gets输入之前,先会查看缓冲区是否有内容,有的话直接拿过来使用
scanf是标准输入函数,每一次输入都需要从键盘获取
2、prinf和puts的区别
puts会自动 添加换行符,printf不会添加换行符

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值