C の文字列の strlen() と sizeof() の違い
strlen()とは
strlen() は文字列の長さを調べる関数です。文字列に含まれる文字の総数を数え、ヌル文字は除外します。文字列に含まれる文字の総数には、アルファベット、特殊文字、数字、空白スペースが含まれます。
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() 関数の引数として渡され、長さを確認します。 string.
#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)
サイズ(タイプ): Type= 参照される型
sizeof(type) の例:
以下のコードでは、&type は変数 (double x) のアドレスを示します。これは 1 ずつ増加し、次の x 型の変数を格納できるアドレスを示します。
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)
サイズ(式): Expression= 評価する必要がある式。
sizeof(式)の例:
以下のプログラムでは、まず変数のサイズを計算して出力します。 この後、式を評価して変数 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() は事前定義関数であり、string.h として知られるヘッダー ファイルで定義されています。 | Sizeof()は、メモリ使用量を計算する単項演算子またはコンパイル時式です。 変数. |
このメソッドは、文字列または文字の配列の長さを見つけるために使用されます。 | このメソッドは、(割り当てられた) データの実際のサイズをバイト単位で見つけるために使用されます。 |
文字列内の文字数をカウントし、null 値を除外します。 | 文字列の長さ (null 値を含む) ではなく、オペランドのサイズを返します。 |
実行時にメモリを割り当て、変数の null 値を探します。 | Sizeof() は変数の値を気にしません。 |
Strlen() 関数は文字列でのみ機能します | Sizeof() 関数は、割り当てられたメモリ量をバイト単位で返します。 |
strlen()の戻り値はlong intです。 | sizeof() の戻り値は unsigned int です。 |
strlen() の構文は XNUMX つだけあり、それは int strlen(const char *str); です。 | sizeof() には、1) sizeof(type)、2) sizeof(variable-name)、3) sizeof(expression) の XNUMX つの構文があります。 |