C语言基础(三)- 数组
2016-12-23 10:19
253 查看
数组的特点:
连续的存储空间
所有变量的数据类型必须相同
所有数据占用的字节大小都相等
为什么需要数组:
为了解决大量同类型数据的存数和使用问题
用数组可以模拟线性的现实世界、//如向量、矩阵、张量等
大部分语言提供了数组这种数据存储结构
数组的缺点:
数组的长度是一定的,无法改变
查找数据不方便
我们通常用一种以数组为内核的工具代替原始的数组来用
连续的存储空间
所有变量的数据类型必须相同
所有数据占用的字节大小都相等
为什么需要数组:
为了解决大量同类型数据的存数和使用问题
用数组可以模拟线性的现实世界、//如向量、矩阵、张量等
大部分语言提供了数组这种数据存储结构
数组的缺点:
数组的长度是一定的,无法改变
查找数据不方便
我们通常用一种以数组为内核的工具代替原始的数组来用
/** * 数组基本定义 */ int a[5] = {1, 2, 3, 4, 5}; //完全初始化 int a[5] = {1, 2, 3};//不完全初始化,未被初始化的元素自动为零 int a[5]; //所有元素值为垃圾直 int a[5] = {0} //清零,每个元素都为零 int a[5] = {1, 2, 3, 4, 5}; int b[5]; //如果要把a数组中的值全部复制给b数组 //错误的写法: b = a;//error!数组的名字代表数组第一个元素的地址 //正确的写法: for(i=0; i<=4, i++) b[i] = a[i]; //键盘输入数组元素的数值: scanf(“%d”,a[0]);//键盘输入a[0] /** * 二维数组 */ //初始化 int a[3][4] = { {1, 2, 3, 4}, {5, 6, 7,8}, {9, 10, 11, 12} }; int a[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; //输出二维数组内容:用for—for结构,用格式控制符可以对输出格式控制 //多维数组 //是否存在多维数组(答:不存在,因为内存是线性一维的) //n维数组可以当做每个元素是n-1维数组的一维数组 /** * 数组遍历 */ # include <stdio.h> int main() { //a是数组的名字,5表示数组的个数,并且这5个元素分别为a[0],a[1],a[2],a[3],a[4] int a[] = {1,2,3,4,5}; for (int i=0; i<sizeof(a)/sizeof(a[0]); i++) { //数组占内存总空间,除以单个元素占内存空间大小 printf("a[%d] = %d\n", i, a[i]); } return 0; } /** * 臭名昭著的冒泡排序 */ # include <stdio.h> int main() { int a[8] = {2, 1, 3, 7, 5, 6, 4, 8}; int length = sizeof(a)/sizeof(a[0]); //core int t; for(int i=0; i<length-1; i++) { for(int j=0; j<length-1-i; j++) { if(a[j] < a[j+1]) { //从大到小 t= a[j]; a[j]= a[j+1]; a[j+1]= t; } } } //以上为核心算法 for(int i=0; i<=7; i++) { printf("a[%d] = %d\n", i, a[i]); } return 0; }
相关文章推荐
- C语言基础(三)(数组)
- C语言基础练习之数组
- 实训汇编语言设计——删除数组中所有为零的项
- 常用字符串函数 && char数组存字符串的问题
- 函数指针数组
- 一个显示某段时间内每个月的方法,返回由这些月份组成的数组
- 实战BULK COLLECT(成批聚合类型)和数组集合type类型is table of 表%rowtype index by binary_integer .
- 数组基本操作
- 求最小绝对值子串、一个整数数组求两两之差绝对值最小值
- 黑马程序员_数组1
- 让打印出的数组有格式
- 算法:找出数组中未出现的那个数字
- 第16周项目 1 数组的排序
- 返回一个整数数组中最大子数组的和(数组头尾连接)
- array_flip() 函数返回一个反转后的数组
- php数组与字符串的转换函数
- 随机数组相加
- [算法]在数组中找到出现次数大于N/K的数
- JavaScript中数组去除重复的三种方法
- JavaScript 数组方法大全