C语言基础(三)- 数组

KinglyJn      2013-02-26

数组的特点:

  1. 连续的存储空间
  2. 所有变量的数据类型必须相同
  3. 所有数据占用的字节大小都相等

为什么需要数组:

  1. 为了解决大量同类型数据的存数和使用问题

  2. 用数组可以模拟线性的现实世界、//如向量、矩阵、张量等

  3. 大部分语言提供了数组这种数据存储结构

数组的缺点:

  1. 数组的长度是一定的,无法改变
  2. 查找数据不方便
  3. 我们通常用一种以数组为内核的工具代替原始的数组来用
/**
* 数组基本定义
*/
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;
}



Tags:


Share: