程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 學點C語言(19):數據類型 - 數組

學點C語言(19):數據類型 - 數組

編輯:關於C語言

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;
}

2. 數組的大小和維數:

#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;
}

3. 遍歷數組:

#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;
}

4. 對一維數組,可以不指定維數,它能自動識別:

#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;
}

4. 不指定維數的數組常常會用於字符串:

#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;
}

5. 二維數組:

#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;
}

5. 可以並只能省略第一個維數:

#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;
}

6. 多維數組:

#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;
}

7. 多維數組也是可以並只能省略第一個維數:

#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;
}

8. 字符串數組:

#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;
}

9. 沒有初始化的局部數組變量,包含的是一堆垃圾值:

#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;
}

10. 初始化數組為空其實很簡單:

#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;
}

返回“學點C語言 - 目錄”

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved