配列 (Arrays)

配列とは, 変数の列から構成されるデータである. 数学に例えると [集合 (set)] や [数列 (sequence)], あるいは [ベクトル (vector)] である.

配列宣言子

配列宣言子 (Array Declarator):

識別子[サイズ]

例えば,:

double x[5];

double x[5] = {1.5, -0.2, 4.7};

array.c

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#include <stdio.h>

int main(void){
  int m[10] = {3, 7, 10};
  int i;

  for(i = 0; i < 10; i++)
    printf("m[%d] = %d\n", i, m[i]);
  return 0;
}

array.c の実行結果は:

[cactus:~/code_c/c_tuts]% ./array
m[0] = 3
m[1] = 7
m[2] = 10
m[3] = 0
m[4] = 0
m[5] = 0
m[6] = 0
m[7] = 0
m[8] = 0
m[9] = 0

array2.c

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>

int main(void){
  int n[2][3] = {
    {1, 2, 3},
    {11, 22, 33}
  };
  int i, j, sum;

  // 行の和
  for(i = 0; i < 2; i++){
    sum = 0;
    for(j = 0; j < 3; j++){
      sum += n[i][j];
      printf("%d\t", n[i][j]);
    }
    printf("| %d\n", sum);
  }

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

  // 列の和
  for(j = 0; j < 3; j++){
    sum = 0;
    for(i = 0; i < 2; i++){
      sum += n[i][j];
    }
    printf("%d\t", sum);
  }
  printf("\n");

  return 0;
}

array.c の実行結果は,

1	2	3	| 6
11	22	33	| 66
------------------------+
12	24	36	

文字列と char 型配列

str_char.c

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#include <stdio.h>

int main(void){
  char str[] = "C language.";
  size_t i;

  printf( "sizeof(str) = %zd\n\n", sizeof(str) );
  printf("\t%%c\t%%d\t%%x\n");
  for(i = 0UL; i< sizeof(str); i++)
    printf("str[%ld]\t%c\t%d\t%x\n", i, str[i], str[i], str[i]);

  return 0;
}

str_char.c の実行結果は,

sizeof(str) = 12

	%c	%d	%x
str[0]	C	67	43
str[1]	 	32	20
str[2]	l	108	6c
str[3]	a	97	61
str[4]	n	110	6e
str[5]	g	103	67
str[6]	u	117	75
str[7]	a	97	61
str[8]	g	103	67
str[9]	e	101	65
str[10]	.	46	2e
str[11]		0	0

文字列の操作

str_cpy.c

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#include <stdio.h>
#include <string.h>

int main(void){
  char str[] = "ABCD";
  char buf[20];

  memset( buf, 0, sizeof(buf) ); // memset(buf, '\0', 20) と同じ
  strcpy(buf, str);
  printf("%s\n", buf);
  strcat(buf, "EFGH");
  printf("%s\n", buf);

  return 0;
}

str_cpy.c の実行結果は:

[cactus:~/code_c/c_tuts]% ./str_cpy
ABCD
ABCDEFGH

Table Of Contents

Previous topic

関数 (Function)

Next topic

ポインタ (Pointer)