#include int main() { int i; int array[] = {11,22,33,44}; long l_array[] = {128,256,512,1024}; /* アドレスは8ずつ増える */ double d_array[] = {1e+4, 2e+3, 3e+2, 4e+1}; /* アドレスは8ずつ増える */ char c_array[] = {'A','B','C','D'}; /* アドレスは1ずつ増える */ char c_2d_array[][7] = {"ab","c","defg","hij"}; /* アドレスは7ずつ増える */ char* str_array[] = {"ab","c","defg","hij"}; /* アドレスは8ずつ増える */ printf( "array:\n" ); for(i = 0 ; i < 4 ; i++) printf( "%d %p %d\n", i, &array[i], array[i] ); /* サンプル */ printf( "%p\n\n", array ); printf( "l_array:\n" ); for(i = 0 ; i < 4 ; i++) printf( "%d %p %ld\n", i, &l_array[i], l_array[i] ); /* long型 */ printf( "%p\n\n", l_array ); printf( "d_array:\n" ); for(i = 0 ; i < 4 ; i++) printf( "%d %p %e\n", i, &d_array[i], d_array[i] ); /* double型 */ /* %e の代わりに%f, %gでも構わない */ printf( "%p\n\n", d_array ); printf( "c_array:\n" ); for(i = 0 ; i < 4 ; i++) printf( "%d %p %c\n", i, &c_array[i], c_array[i] ); /* char型 */ printf( "%p\n\n", c_array ); printf( "c_2d_array:\n" ); for(i = 0 ; i < 4 ; i++) printf( "%d %p %s\n", i, &c_2d_array[i], c_2d_array[i] ); /* 2次元配列 */ printf( "%p\n\n", c_2d_array ); printf( "str_array:\n" ); for(i = 0 ; i < 4 ; i++) printf( "%d %p %s\n", i, &str_array[i], str_array[i] ); /* char *型 */ /* 文字数とは関係ないことに特に注意すること。 str_arrayの要素はあくまでポインタなので、サイズは8バイト。 */ printf( "%p\n\n", str_array ); printf("Size of each type\n"); printf(" int: %ld, long: %ld, double: %ld, char: %ld\n", (long) sizeof(int), (long) sizeof(long), (long) sizeof(double), (long) sizeof(char)); printf(" int*: %ld, long*: %ld, double*: %ld, char*: %ld\n", (long) sizeof(int *), (long) sizeof(long *), (long) sizeof(double *), (long) sizeof(char *)); return 0; }