学点 C 语言(19): 数据类型 - 数组

180it 2020-03-05 AM 2624℃ 0条

学点 C 语言(19): 数据类型 - 数组

  1. 数组的标志是 []:

    include <stdio.h>

int main(void)
{

int nums[3];

nums[0] = 11;
nums[1] = 22;
nums[2] = 33;

printf("%d, %d, %d", nums[0], nums[1], nums[2]);

getchar();
return 0;

}

  1. 数组的大小和维数:

    include <stdio.h>

int main(void)
{

int nums[10];

printf("数组大小是: %d\n", sizeof(nums));
printf("数组维数是: %d\n", sizeof(nums)/sizeof(nums[0]));
getchar();
return 0;

}

  1. 遍历数组:

    include <stdio.h>

int main(void)
{

int nums[10];

int i;
for (i = 0; i < sizeof(nums)/sizeof(nums[0]); i++) 
    nums[i] = i * i;
    
for (i = 0; i < sizeof(nums)/sizeof(nums[0]); i++) 
    printf("%d\n", nums[i]);

getchar();
return 0;

}

对字符串数组, 我们也可以这样想...

include <stdio.h>

int main(void)
{

char cs[] = "ABCDEFG";
int i;
for (i = 0; cs[i]; i++) {   /* cs[i] 为假时, 就到了那个空字符了 */
    printf("%c\n", cs[i]);
}

getchar();
return 0;

}

  1. 对一维数组, 可以不指定维数, 它能自动识别:

    include <stdio.h>

int main(void)
{

double ds[] = {1.1, 2.2, 3.3, 4.4};

int count = sizeof ds / sizeof ds[0];
int i;

for (i = 0; i < count; i++) {
    printf("%.1f\n", ds[i]);
}

getchar();
return 0;

}

  1. 不指定维数的数组常常会用于字符串:

    include <stdio.h>

int main(void)
{

char str1[] = "Builder";

/* 假如不怕麻烦可以这样初始化 */
char str2[8] = {'B','u','i','l','d','e','r','\0'};

unsigned i;
for (i = 0; i < sizeof str1/sizeof str1[0]; i++) {
    printf("%c", str1[i]);    
}

printf("\n%s", str1);
printf("\n%s", str2);

getchar();
return 0;

}

  1. 二维数组:

    include <stdio.h>

int main(void)
{

int nums[3][4] = {
                   {11,12,13,14},
                   {21,22,23,24},
                   {31,32,33,34}
                 };

printf("%d,%d,%d\n", nums[0][2], nums[1][2], nums[2][2]);

getchar();
return 0;

}

  1. 可以并只能省略第一个维数:

    include <stdio.h>

int main(void)
{

int nums[][4] = {
                   {11,12,13,14},
                   {21,22,23,24},
                   {31,32,33,34}
                 };

printf("%d,%d,%d\n", nums[0][2], nums[1][2], nums[2][2]);

getchar();
return 0;

}

  1. 多维数组:

    include <stdio.h>

int main(void)
{

int nums[2][3][4] = {
                      {
                        {111,112,113,114},
                        {121,122,123,124},
                        {131,132,133,134}
                      },
                      {
                        {211,212,213,214},
                        {221,222,223,224},
                        {231,232,233,234}
                      }
                    };

printf("%d,%d,%d\n", nums[0][0][0], nums[1][1][1], nums[1][2][2]);
getchar();
return 0;

}

  1. 多维数组也是可以并只能省略第一个维数:

    include <stdio.h>

int main(void)
{

int nums[][3][4] = {
                      {
                        {111,112,113,114},
                        {121,122,123,124},
                        {131,132,133,134}
                      },
                      {
                        {211,212,213,214},
                        {221,222,223,224},
                        {231,232,233,234}
                      }
                    };

printf("%d,%d,%d\n", nums[0][0][0], nums[1][1][1], nums[1][2][2]);
getchar();
return 0;

}

  1. 字符串数组:

    include <stdio.h>

int main(void)
{

char css[][10] = {
                   "AAA",
                   "BBB",
                   "CCCCCCC"
                 };
size_t i;
for (i = 0; i < sizeof(css)/sizeof(css[0]); i++) {
    printf("%s\n", css[i]);    
}

getchar();
return 0;

}

  1. 没有初始化的局部数组变量, 包含的是一堆垃圾值:

    include <stdio.h>

int ns1[10]; / 这个会初始化为空 /

int main(void)
{

int ns2[10]; /* 这个不会初始化 */

int i;
    
for (i = 0; i < sizeof(ns1)/sizeof(ns1[0]); i++) 
    printf("%d\n", ns1[i]);

printf("------------\n");

for (i = 0; i < sizeof(ns2)/sizeof(ns2[0]); i++) 
    printf("%d\n", ns2[i]);

getchar();
return 0;

}

  1. 初始化数组为空其实很简单:

    include <stdio.h>

int main(void)
{

int ns1[10] = {NULL}; /* 或 {0} */
int ns2[2][3][4] = {0};

int i;
for (i = 0; i < sizeof(ns1)/sizeof(ns1[0]); i++) 
    printf("%d\n", ns1[i]);

printf("---------\n");
printf("%d\n", ns2[1][2][3]);

getchar();
return 0;

}

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!

标签: none

学点 C 语言(19): 数据类型 - 数组