【C】配列の要素数を得る
C言語で配列の要素数を得たい時はsizeof演算子を使って以下のように行う。
(#defineで定義している文字列要素数をループ条件にすれば済む話だけど、それでは気持ち悪い。)
#define ARRAY_SIZE 30 int main( void ) { char array[ARRAY_SIZE]; for ( int i = 0; i < sizeof( array ) / sizeof( array[0] ); i++ ) { array[i] = '0'; } return 0; }
ただし、ローカル関数に配列の先頭アドレスを渡す時は特別。
先頭アドレスだけ渡しても得られるのは先頭アドレスのポインタサイズ。
引数として、要素数もセットで渡してやらなければならない…
#define ARRAY_SIZE 30 int main( void ) { char array[ARRAY_SIZE] = {0}; printArrayAll( array, sizeof( array ) / sizeof( array[0] ) ); return 0; } void printArrayAll( char array[], int array_size ) { for ( int i = 0; i < array_size; i++ ) { printf( "%c\n", array[i] ); } return; }
・配列宣言の添字に変数を入れられない
// const int ARRAY_SIZE = 20; // arary[ARRAY_SIZE];
・配列サイズをローカル関数に渡せない。
Cはここらへんが煩わしい。文字列周りも。
参考サイト
teppeis.hatenablog.com