thisdesuのブログ

C言語はじめました

にほんブログ村 IT技術ブログ C/C++へ

配列の個数

静的に定義した構造体の配列の個数を後で知りたいときに便利です。
仕組み的にはアドレス辺りで説明しましたが、静的にとられた値は全体の領域がsizeofで取れるので、構造体1つのsizeofで割れば良いだけです。これはマクロなんかで用意しておく定番ですね。

■サンプルコード

#include <stdio.h>

// 構造体
typedef struct _user {
  int    no;
  char *name;
  char *post;
  char *addrress;
} USER;


int main() {
    USER user[] = {
         {1,  "first",    "001-0001",    "Tokyo/Japan"    },
         {2,  "second",    "002-0002",    "Osaka/Japan"    },
         {3,  "third",    "003-0003",    "Nagoya/Japan"    },
    };

    // 配列数の計算
    printf("count:%d\n", sizeof( user ) / sizeof( user[0] ) );

    return(0);
}


■結果

$ gcc main.c
$ ./a.out
count:3