01 /****************************************/ 02 /* 1 次元配列,初期設定,及び,ポインタ */ 03 /* coded by Y.Suganuma */ 04 /****************************************/ 05 #include <stdio.h> 06 07 int main() 08 { 09 /* 10 初期設定された値と確保された領域のサイズ 11 */ 12 int x2[6] = {1, 2, 3, 4, 5, 6}; /* 6つのデータ領域 */ 13 int i1; 14 for (i1 = 0; i1 < 6; i1++) 15 printf("%d ", x2[i1]); 16 printf("(%dバイト)\n", sizeof(x2)); 17 18 int x3[] = {1, 2, 3, 4}; /* 4つのデータ領域 */ 19 for (i1 = 0; i1 < 4; i1++) 20 printf("%d ", x3[i1]); 21 printf("(%dバイト)\n", sizeof(x3)); 22 23 char c1[15] = {"test data"}; /* 15個のデータ領域 */ 24 char c2[] = {"test data"}; /* 10個のデータ領域 */ 25 char *c3 = {"test data"}; // 使用すべきではない(警告が出力される) 26 printf("%s (%dバイト)\n", c1, sizeof(c1)); 27 printf("%s (%dバイト)\n", c2, sizeof(c2)); 28 printf("%s (%dバイト)\n", c3, sizeof(c3)); 29 /* 30 要素の参照と変更 31 */ 32 int *x1 = x2; // x1 = &x2[0]でも可 33 x1[1] = -1; 34 *(x1+2) = -2; 35 x2[3] = -3; 36 *(x2+4) = -4; 37 for (i1 = 0; i1 < 6; i1++) 38 printf("%d ", x1[i1]); 39 printf("\n"); 40 for (i1 = 0; i1 < 6; i1++) 41 printf("%d ", x2[i1]); 42 printf("\n"); 43 44 char *c4; /* 文字列を指す1つのポインタ */ 45 // c1 = "test1 data "; 46 // c2 = "test2 data"; 47 c3 = "test3 data"; // 使用すべきではない(警告が出力される) 48 c4 = "test4 data"; // 使用すべきではない(警告が出力される) 49 printf("%s (%dバイト)\n", c3, sizeof(c3)); 50 printf("%s (%dバイト)\n", c4, sizeof(c4)); 51 52 return 0; 53 }
int x1[6] = x2;
1 2 3 4 5 6 (24バイト) 1 2 3 4 (16バイト) test data (15バイト) test data (10バイト) test data (4バイト) 1 -1 -2 -3 -4 6 1 -1 -2 -3 -4 6 test3 data (4バイト) test4 data (4バイト)