ホームページ 運用・保守 安全性 sizeof と strlen の解析を行う方法

sizeof と strlen の解析を行う方法

May 27, 2023 pm 12:05 PM
sizeof strlen

1.strlen関数.

strlen が行うことは単なるカウンターであり、メモリ内の特定の場所から開始されます (文字列の先頭、中間のどこか、または不確実なメモリ領域である可能性があります)、最初の文字列の終了文字 '\0' に遭遇するまでスキャンを開始し、その後 Counter 値を返します

2.sizeofOperator

sizeof() は、変数が宣言された後に占有されている 番号 を返します。また、sizeof は関数ではなく、単なる演算子です。

3.strlensizeof

3.1## の違い# sizeof はパラメータとして type を使用できますが、strlen はパラメータとして char* のみを使用でき、''\0'' で終わる必要があります。

3.2 sizeof は、関数をパラメーターとして使用することもできます (例: short f(); printf("%d\n", sizeof(f())); 出力結果は次のようになります。 sizeof (short)、つまり 2。

3.3 配列 sizeof のパラメーターは縮退せず、strlen に渡されるときにポインターに縮退します。

3.4 ほとんどのコンパイラーは、コンパイル時に変数の型または長さである sizeof を計算します。これが、sizeof(x) を使用して配列の次元を定義できる理由です。

3.5 strlen の結果は実行時にのみ計算できます。型が占有するメモリのサイズではなく、文字列の長さを計算するために使用されます。

3.6 sizeof の後に、型の場合は括弧を追加する必要がありますが、変数名の場合は括弧を追加する必要はありません。これは、sizeof が関数ではなく演算子であるためです。

4.strlensizeof

の違いの例

1.char str[20]="0123456789";

int a=strlen(str); //a=10; >>>> strlen は文字列を計算します長さは、文字列としてターミネータ 0x00 で終わります。

int b=sizeof(str); //b=20; >>>> sizeof は、割り当てられた配列 str[20] によって占有されるメモリ空間のサイズを計算します。内部に保存されているコンテンツの変更。

2.上記は静的配列を処理した結果です。ポインタの場合は結果が異なります

char* ss = " 0123456789";

sizeof(ss) 結果 4 ===》ss は文字列定数を指す文字ポインタです。sizeof はポインタが占めるスペースを取得します。 be これは長整数なので、4

となり、sizeof(*ss) の結果は 1 ===》*ss は最初の文字です。実際には、次の最初の '0' です。取得された文字列。メモリ空間は char 型で、1 ビットを占有します。

strlen(ss)= 10 >>>> この文字列の長さを取得したい場合は、次のようにする必要があります。ストレンを使います。 sizeof 関数は、メモリ内でパラメータによって占有されているバイト数を返します。一方、strlen 関数は、パラメータが指す文字列内の文字数を返します。

3.sizeof を使用する場合、非常に特殊な状況が発生します。つまり、配列名がポインターに変換されます。

char Array[3] = { '0'} ;

sizeof(Array) == 3;

char *p = Array;

strlen (p) = = 1; //sizeof(p) の結果は 4

配列名を関数に渡すと、完全にポインタに縮退してしまいます

4. メモリ完了

class XXX

#{

int i;

int j;

char k;

};

XX x;

cout<

cout<

記憶の完成は、筆記面接でテストするのが比較的簡単な知識ポイントです

以上がsizeof と strlen の解析を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)