目次
質問
構造宣言の一般的な形式
構造体変数
方法 2
メソッド 2
構造体の初期化とアクセス
メソッド 3 (メンバー演算子を使用)
方法 4 (scanf 関数を使用)
プログラム
出力
ホームページ バックエンド開発 C++ 構造体のメンバーのサイズとオフセットを表示する C プログラムを作成します。

構造体のメンバーのサイズとオフセットを表示する C プログラムを作成します。

Aug 29, 2023 pm 08:09 PM
構造 サイズ オフセット

構造体のメンバーのサイズとオフセットを表示する C プログラムを作成します。

質問

構造体を定義し、メンバー変数のサイズとオフセットを表示する C プログラムを作成します

構造体本体 - これは、さまざまなデータ型の変数のコレクションであり、1 つの名前でグループ化されています。

構造宣言の一般的な形式

datatype member1;
struct tagname{
   datatype member2;
   datatype member n;
};
ログイン後にコピー

ここで、 struct - キーワード

tagname - 構造の名前を指定します

member1, member2 - 構成要素を指定します構造データ項目。

struct book{
   int pages;
   char author [30];
   float price;
};
ログイン後にコピー

構造体変数

構造体変数を宣言するには 3 つの方法があります。

方法 1

struct book{
   int pages;
   char author[30];
   float price;
}b;
ログイン後にコピー

方法 2

struct{
   int pages;
   char author[30];
   float price;
}b;
ログイン後にコピー

メソッド 3

struct book{
   int pages;
   char author[30];
   float price;
};
struct book b;
ログイン後にコピー

構造体の初期化とアクセス

メンバーと構造体変数間のリンクは、メンバー演算子 (またはドット演算子) によって確立されます。

次の方法で初期化できます:

メソッド 1

struct book{
   int pages;
   char author[30];
   float price;
} b = {100, "balu", 325.75};
ログイン後にコピー

メソッド 2

struct book{
   int pages;
   char author[30];
   float price;
};
struct book b = {100, "balu", 325.75};
ログイン後にコピー

メソッド 3 (メンバー演算子を使用)

struct book{
   int pages;
   char author[30];
   float price;
} ;
struct book b;
b. pages = 100;
strcpy (b.author, "balu");
b.price = 325.75;
ログイン後にコピー

方法 4 (scanf 関数を使用)

struct book{
   int pages;
   char author[30];
   float price;
} ;
struct book b;
   scanf ("%d", &b.pages);
   scanf ("%s", b.author);
   scanf ("%f", &b. price);
ログイン後にコピー

データ メンバーを使用して構造体を宣言し、そのオフセット値と構造体のサイズを出力してみます。

プログラム

リアルタイムデモンストレーション

#include<stdio.h>
#include<stddef.h>
struct tutorial{
   int a;
   int b;
   char c[4];
   float d;
   double e;
};
int main(){
   struct tutorial t1;
   printf("the size &#39;a&#39; is :%d</p><p>",sizeof(t1.a));
   printf("the size &#39;b&#39; is :%d</p><p>",sizeof(t1.b));
   printf("the size &#39;c&#39; is :%d</p><p>",sizeof(t1.c));
   printf("the size &#39;d&#39; is :%d</p><p>",sizeof(t1.d));
   printf("the size &#39;e&#39; is :%d</p><p>",sizeof(t1.e));
   printf("the offset &#39;a&#39; is :%d</p><p>",offsetof(struct tutorial,a));
   printf("the offset &#39;b&#39; is :%d</p><p>",offsetof(struct tutorial,b));
   printf("the offset &#39;c&#39; is :%d</p><p>",offsetof(struct tutorial,c));
   printf("the offset &#39;d&#39; is :%d</p><p>",offsetof(struct tutorial,d));
   printf("the offset &#39;e&#39; is :%d</p><p></p><p>",offsetof(struct tutorial,e));
   printf("size of the structure tutorial is :%d",sizeof(t1));
   return 0;
}
ログイン後にコピー

出力

the size &#39;a&#39; is :4
the size &#39;b&#39; is :4
the size &#39;c&#39; is :4
the size &#39;d&#39; is :4
the size &#39;e&#39; is :8
the offset &#39;a&#39; is :0
the offset &#39;b&#39; is :4
the offset &#39;c&#39; is :8
the offset &#39;d&#39; is :12
the offset &#39;e&#39; is :16

size of the structure tutorial is :24
ログイン後にコピー

以上が構造体のメンバーのサイズとオフセットを表示する C プログラムを作成します。の詳細内容です。詳細については、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)

VirtualBox でディスク サイズを増やす方法 [ガイド] VirtualBox でディスク サイズを増やす方法 [ガイド] Mar 17, 2024 am 10:10 AM

事前に定義されたディスク サイズにそれ以上のデータを入れる余地がないという状況によく遭遇します。後の段階でさらに多くの仮想マシンのハード ディスク領域が必要になった場合は、仮想ハード ディスクとパーティションを拡張する必要があります。この記事では、VirtualBox でディスク サイズを増やす方法を説明します。 VirtualBox でのディスク サイズの増加 問題が発生する可能性が常にあるため、これらの操作を実行する前に仮想ハード ディスク ファイルをバックアップする必要があることに注意することが重要です。常にバックアップを作成することをお勧めします。ただし、このプロセスは通常は正常に機能します。続行する前に必ずマシンをシャットダウンしてください。 VirtualBox でディスク サイズを増やすには 2 つの方法があります。 CLを使用したGUIを使用してVirtualBoxのディスクサイズを拡張する

C言語の構造体と配列の違いは何ですか? C言語の構造体と配列の違いは何ですか? Aug 30, 2023 pm 09:37 PM

C では、構造体と配列の両方がデータ型のコンテナとして使用されます。つまり、構造体と配列の両方でデータを保存し、それらに対してさまざまな操作を実行できます。内部実装に基づいて、この 2 つの基本的な違いをいくつか示します。 Sr. Number Key 構造体 配列 1 定義 構造体は、コンテナとして使用され、さまざまなタイプの変数を保持できるデータ構造として定義できます。一方、配列は、同じ型の変数を保持できるコンテナとして使用されるデータ構造ですが、複数のデータ型変数をサポートしません。 2 メモリ割り当て 入力データのメモリ割り当て構造は、連続したメモリ位置にある必要はありません。一方、配列の場合、入力データは連続したメモリ割り当てに格納されます。これは、配列が連続したメモリ ブロックを割り当てるメモリ モデルにデータを格納することを意味します。

Golang 構造の強力な転送: 実装原理とテクニックの詳細な説明 Golang 構造の強力な転送: 実装原理とテクニックの詳細な説明 Apr 03, 2024 pm 03:09 PM

Golang における構造体の強制とは、ある構造体の型の値を別の型に変換することです。これは、アサーション フォース トランスファー、リフレクション フォース トランスファー、ポインター間接フォース トランスファーなどの手法を通じて実現できます。アサーション強制は型アサーションを使用し、リフレクション強制はリフレクション メカニズムを使用し、ポインタの間接強制は値のコピーを回避します。具体的な手順は次のとおりです: 1. アサーション強制転送: typeassertion 構文を使用します; 2. リフレクション強制転送: reflect.Type.AssignableTo 関数とreflect.Value.Convert 関数を使用します; 3. ポインタの間接強制転送: ポインタ逆参照を使用します。

PHPにおける構造体の応用と操作方法 PHPにおける構造体の応用と操作方法 Jul 16, 2023 pm 11:21 PM

PHP 言語が開発および成長し続けるにつれて、PHP における構造の適用および操作方法はますます完成してきています。一般的な変数と配列に加えて、PHP はより柔軟なデータ型、つまり構造体も提供します。構造体は、異なる型の複数のデータ メンバーで構成される複合データ型です。関連するデータを結合して、より完全で構造化されたデータを形成できます。 PHP では、クラスとオブジェクトを使用して構造の動作と機能をシミュレートできます。まず、その方法を見てみましょう

json.Marshal関数を使用して構造体をJSON文字列に変換します json.Marshal関数を使用して構造体をJSON文字列に変換します Jul 24, 2023 pm 12:54 PM

json.Marshal 関数を使用して構造体を JSON 文字列に変換する Go 言語では、 json.Marshal 関数を使用して構造体を JSON 文字列に変換できます。構造体は複数のフィールドで構成されるデータ型であり、JSON は一般的に使用される軽量のデータ交換形式です。構造を JSON 文字列に変換すると、異なるシステム間でのデータ交換が簡単になります。サンプルコードは次のとおりです: packagemainimport(&q

C 言語での匿名共用体と構造体の適用 C 言語での匿名共用体と構造体の適用 Sep 16, 2023 pm 06:45 PM

ここでは、C言語の匿名共用体と構造体とは何かを見てみましょう。匿名の共用体と構造体は、名前のない共用体と構造体です。これらには名前がないため、その直接のオブジェクトを作成することはできません。入れ子構造またはユニオンとして使用します。これらは、匿名の共用体と構造体の例です。 struct{ datatypevariable; ...};union{ datatypevariable; ...};この例では、

json.Unmarshal 関数を使用して、JSON 文字列を構造体に解析します。 json.Unmarshal 関数を使用して、JSON 文字列を構造体に解析します。 Jul 25, 2023 pm 10:49 PM

json.Unmarshal 関数を使用して JSON 文字列を構造体に解析します。Go 言語では、json.Unmarshal 関数を使用して JSON 文字列を構造体に解析できます。これは、特に API 応答を処理する場合や設定ファイルを読み取る場合に非常に便利な機能です。まず、解析する JSON オブジェクトの構造を表す構造タイプを定義する必要があります。次の JSON 文字列があるとします: {"name"

golang はどのようにして構造体を返すのでしょうか? golang はどのようにして構造体を返すのでしょうか? Apr 23, 2024 pm 02:03 PM

Golangで構造体を返すにはどうすればよいですか?関数シグネチャで構造体のタイプを指定します (funcgetPersonal()Person{} など)。関数本体で return{} ステートメントを使用して、必須フィールドを含む構造体を返します。構造体フィールドには、基本型または他の構造を使用できます。

See all articles