C言語のsizeofとstrlenの違いは何ですか?
sizeofとstrlenは、C言語でよく使われる関数ですが、役割が異なり、主な違いは次の通りです。
- sizeofは関数ではなく演算子であり、データ型や変数のバイト数を取得するために使用されます。たとえば、sizeof(int)は4を返すことで、int型が4バイトのスペースを占めることを示しています。sizeof(array)は、配列全体が占める空間のサイズを返します。sizeofはコンパイル時に計算され、ランタイム時の計算は実行されません。
- strlen は、文字列の長さを計算する関数であり、つまり文字列内の文字の数を指します(文字列の終端の\0文字は含まれません)。たとえば、strlen(“hello”) は 5 を返します。なぜなら、文字列”hello”には5つの文字が含まれているからです。strlen は、実行時に計算され、文字列の終端の\0文字が出会うまで文字列全体を走査する必要があります。