C の文字列に対する strlen() と sizeof() の違い
strlen() とは
strlen() は文字列の長さを求める関数です。ヌル文字を除外して、文字列に表示される文字の合計をカウントします。文字列の合計文字数には、アルファベット、特殊文字、および数字が含まれ、空白が含まれます。
C チュートリアルの文字列の strlen() と sizeof() のこの違いでは、以下を学習します:
- strlen() とは
- sizeof() とは
- strlen() の構文
- sizeof() の構文
- strlen() と sizeof() の違い
sizeof() とは
sizeof() は、そのオペランドのサイズを計算するために使用される関数です。特定の変数のサイズを返します。この関数は、整数型やポインター型、浮動小数点型、構造体、共用体などのプリミティブ型を含む任意のデータ型に適用できます。 sizeof() を含むプログラムの出力は、32 ビット システムと 64 ビット システムで異なる場合があります。
主な違い:
- Strlen メソッドは配列の長さを見つけるために使用され、sizeof() メソッドはデータの実際のサイズを見つけるために使用されます。
- Strlen() は文字列内の文字数をカウントし、sizeof() はオペランドのサイズを返します。
- Strlen() は変数の null 値を探しますが、sizeof() は変数の値を気にしません。
- strlen() の戻り値は long int ですが、sizeof() の戻り値は unsigned int です。
strlen() の構文
strcount = strlen(my_string);
ここで、my_string は文字配列変数です。
strlen() の例
以下の C プログラムでは、char 型の文字列変数を宣言しています。 strng 変数は、文字列の長さを見つけるために strlen() 関数の引数として渡されます。
#include<stdio.h> #include<string.h> int main() { char strng[] = "January"; printf("Length of given string is: %lu\n", strlen(strng)); }
出力:
Length of given string is: 7
sizeof() の構文
構文 1)
sizeof(type): Type=参照される型
sizeof(type) の例:
以下のコードでは、&type は変数のアドレスを示します (double x)。タイプxの次の変数を格納できるアドレスを与える1でインクリメントされます。
x を char* に型変換して差を取ると、メモリに格納されている char 型の変数の総数を知ることができます。 getchar() を使用して文字を読み取りました。
#include<stdio.h> #define my_sizeof(type) (char *)(&type+1)-(char*)(&type) int main() { double x; printf("%ld", my_sizeof(x)); getchar(); return 0; }
出力:
8
構文 2)
sizeof(変数名): Variable-name=サイズを決定する変数の名前。
以下の C プログラムでは、size char データ型を出力しています。 Printf ステートメントには、引数 char を持つ sizeof 関数が含まれています。
sizeof(変数名)の例:
#include<stdio.h> int main() { printf("sizeof(char) = %d\n\n", sizeof(char)); return 0; }
出力:
sizeof(char) = 1
構文 3)
sizeof(式): Expression=評価する式。
sizeof(expression) の例:
以下のプログラムでは、最初に変数のサイズを計算して出力しています。この後、expression を評価して変数 a に格納し、その結果を printf ステートメントで表示します。
#include<stdio.h> int main() { char p = 'S'; double q = 4.65; printf("Size of variable p : %d\n",sizeof(p)); printf("Size of an expression : %d\n",sizeof(p+q)); int a = (int)(p+q); printf("Size of explicitly converted expression : %d\n",sizeof(a)); return 0; }
出力:
Size of variable p : 1 Size of an expression : 8 Size of explicitly converted expression : 4
strlen() と sizeof() の違い
strlen() と sizeof() の重要な違いは次のとおりです:
Strlen() Sizeof() Strlen() は、string.h.Sizeof() として知られるヘッダー ファイルで定義される定義済み関数です。Sizeof() は、変数が占有するメモリの量を計算する単項演算子またはコンパイル時の式です。文字列または文字の配列の長さを見つけます。このメソッドは、(割り当てられた) データの実際のサイズをバイト単位で見つけるために使用されます。文字列内の文字数をカウントし、null 値を除外します。オペランドのサイズではなく、オペランドのサイズを返します。文字列の長さ (null 値を含む)。実行時にメモリを割り当て、変数の null 値を探します。Sizeof() は変数の値を気にしません。Strlen() 関数は文字列でのみ機能します。Sizeof() 関数は量を返します。 strlen() の戻り値は long int です。 sizeof() の戻り値は unsigned int です。 strlen() の構文は int strlen(const char *str) の 1 つだけです。3 つの構文があります。 sizeof() の 1) sizeof(型)、2) sizeof(変数名)、および 3) sizeof(expresシオン):
C言語