Array

数组(和指针结合的内容在指针中)

一维数组

未初始化

#define SIZE 4
int array[SIZE];

如果 size 是 4,只赋值了两个,那就是默认给前两个赋值了

int array[SIZE] = {100,200}; // [100,200,0,0]

也可以指定给某个位置赋值(需要 C99)

int array[SIZE] = {[0]=100, [3]=200}; // [100, 0, 0, 200]

可以不指定长度

int array[] = {100,200}; // [100, 200]

可以用变量指定数组长度(需要 C99)

int array[n];

下面这样的时候不可以的!不能用一个数组给另一个数组赋值

int array2[] = array; // wrong! 

下面这个也不行,不能声明完了再用大括号赋值

int array2[SIZE];
array2 = {100, 200}; // wrong!

多维数组

就像数学中的矩阵一样。比如三行四列的矩阵就是a[3][4]

Demo
/* rain.c  -- finds yearly totals, yearly average, and monthly
 average for several years of rainfall data */
#include <stdio.h>
#define MONTHS 12    // number of months in a year
#define YEARS   5    // number of years of data
int main(void)
{
    // initializing rainfall data for 2010 - 2014
    const float rain[YEARS][MONTHS] =
    {
        {4.3,4.3,4.3,3.0,2.0,1.2,0.2,0.2,0.4,2.4,3.5,6.6},
        {8.5,8.2,1.2,1.6,2.4,0.0,5.2,0.9,0.3,0.9,1.4,7.3},
        {9.1,8.5,6.7,4.3,2.1,0.8,0.2,0.2,1.1,2.3,6.1,8.4},
        {7.2,9.9,8.4,3.3,1.2,0.8,0.4,0.0,0.6,1.7,4.3,6.2},
        {7.6,5.6,3.8,2.8,3.8,0.2,0.0,0.0,0.0,1.3,2.6,5.2}
    };
    int year, month;
    float subtot, total;
    
    printf(" YEAR    RAINFALL  (inches)\n");
    for (year = 0, total = 0; year < YEARS; year++)
    {             // for each year, sum rainfall for each month
        for (month = 0, subtot = 0; month < MONTHS; month++)
            subtot += rain[year][month];
        printf("%5d %15.1f\n", 2010 + year, subtot);
        total += subtot; // total for all years
    }
    printf("\nThe yearly average is %.1f inches.\n\n",
           total/YEARS);
    printf("MONTHLY AVERAGES:\n\n");
    printf(" Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct ");
    printf(" Nov  Dec\n");
    
    for (month = 0; month < MONTHS; month++)
    {             // for each month, sum rainfall over years
        for (year = 0, subtot =0; year < YEARS; year++)
            subtot += rain[year][month];
        printf("%4.1f ", subtot/YEARS);
    }
    printf("\n");
    
    return 0;
}

// (base) kimshan@MacBook-Pro output % ./"rain"
//  YEAR    RAINFALL  (inches)
//  2010            32.4
//  2011            37.9
//  2012            49.8111
//  2013            44.0
//  2014            32.9
// 
// The yearly average is 39.4 inches.
// 
// MONTHLY AVERAGES:
// 
//  Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec
//  7.3  7.3  4.9  3.0  2.3  0.6  1.2  0.3  0.5  1.7  3.6  6.7 

最后更新于

这有帮助吗?