タグ付けされた質問 「struct」

構文がCに似ている、またはCから派生したさまざまなプログラミング言語のキーワード(C ++、C#、Swift、Go、Rustなど)。構文とセマンティクスは言語に依存する可能性があるため、特定のプログラミング言語タグを使用して、 `struct`の使用を含む質問にタグを付けます。キーワードは、他のデータ型で構成されるデータ型を定義または宣言します。構造体の各メンバーには独自のメモリ領域があります(メンバーが単一のメモリ領域を共有する「共用体」とは対照的)。


4
構造体の整列がフィールドタイプがプリミティブであるかユーザー定義であるかに依存するのはなぜですか?
で野田時間 v2では、我々はナノ秒の解像度に移動しています。つまり、関心のある時間の範囲全体を表すのに8バイト整数を使用できなくなったということです。そのため、野田時間の(多くの)構造体のメモリ使用量を調査するようになりました。 CLRの配置の決定におけるわずかな奇妙さを明らかにするため。 まず、これは実装の決定であり、デフォルトの動作はいつでも変更される可能性があることを理解しています。とを使用して変更できることを理解していますが、可能であればそれを必要としないソリューションを考え出します。[StructLayout][FieldOffset] 私の中心的なシナリオはstruct、参照タイプのフィールドと他の2つの値タイプのフィールドを含むaがあり、これらのフィールドがint。。私はそれが64ビットCLRで16バイトとして表されることを期待していましたが(参照用に8バイト、他のそれぞれに4バイト)、何らかの理由で24バイトを使用しています。ちなみに私は配列を使用してスペースを測定しています-レイアウトは状況によって異なる場合があることは理解していますが、これは妥当な出発点のように感じました。 これは問題を示すサンプルプログラムです: using System; using System.Runtime.InteropServices; #pragma warning disable 0169 struct Int32Wrapper { int x; } struct TwoInt32s { int x, y; } struct TwoInt32Wrappers { Int32Wrapper x, y; } struct RefAndTwoInt32s { string text; int x, y; } struct RefAndTwoInt32Wrappers { string text; Int32Wrapper x, …

3
構造体を0に初期化する
私がこのような構造体を持っている場合: typedef struct { unsigned char c1; unsigned char c2; } myStruct; この構造体を0に初期化する最も簡単な方法は何でしょうか?以下で十分でしょうか? myStruct _m1 = {0}; または、各メンバーを明示的に0に初期化する必要がありますか? myStruct _m2 = {0,0};
116 c  struct  initialization 

8
JavaScriptの構造体
以前は、いくつかの関連する変数を格納する必要があるとき、クラスを作成していました。 function Item(id, speaker, country) { this.id = id; this.speaker = spkr; this.country = country; } var myItems = [ new Item(1, 'john', 'au'), new Item(2, 'mary', 'us') ]; しかし、これが良い習慣かどうか疑問に思っています。JavaScriptで構造体をシミュレートする他のより良い方法はありますか?
112 javascript  struct 

7
空の構造体をチェックする方法は?
構造体を定義します... type Session struct { playerId string beehive string timestamp time.Time } 時々私はそれに空のセッションを割り当てます(nilは不可能だからです) session = Session{}; 次に、空かどうかを確認します。 if session == Session{} { // do stuff... } 明らかにこれは機能していません。どうやって書くの?
110 struct  go 

9
Cのsizeof単一の構造体メンバー
別の構造体に依存する構造体を宣言しようとしています。sizeof安全・徹底的に使いたい。 typedef struct _parent { float calc ; char text[255] ; int used ; } parent_t ; 次にchild_t、と同じサイズの構造体を宣言したいと思いparent_t.textます。 これどうやってするの?(以下の疑似コード。) typedef struct _child { char flag ; char text[sizeof(parent_t.text)] ; int used ; } child_t ; parent_tおよびstruct _parentでいくつかの異なる方法を試しましたが、私のコンパイラは受け入れません。 トリックとして、これはうまくいくようです: parent_t* dummy ; typedef struct _child { char flag ; char text[sizeof(dummy->text)] …
109 c  struct  sizeof 

6
C / C ++構造体とクラス
C ++クラスを完成した後、構造体/クラスは、いくつかの小さな違いを除いて実質的に同じであるように見えました。 私はこれまでCでプログラミングしたことがありません。しかし、私はそれが構造を持っていることを知っています。Cでは、他の構造体を継承し、パブリック/プライベートの修飾子を設定することは可能ですか? これを通常のCで実行できる場合、なぜ世界中でC ++が必要なのでしょうか。クラスと構造体の違いは何ですか?
108 c++  class  struct 

2
Goインターフェースフィールド
Goでは、インターフェースがデータではなく機能を定義するという事実に精通しています。一連のメソッドをインターフェイスに配置しましたが、そのインターフェイスを実装するものに必要なフィールドを指定できません。 例えば: // Interface type Giver interface { Give() int64 } // One implementation type FiveGiver struct {} func (fg *FiveGiver) Give() int64 { return 5 } // Another implementation type VarGiver struct { number int64 } func (vg *VarGiver) Give() int64 { return vg.number } これで、インターフェースとその実装を使用できます。 // A function …
105 struct  interface  go 

10
構造体にインデックスを付けることは合法ですか?
コードがどれほど「悪い」かに関わらず、また、アライメントなどがコンパイラー/プラットフォームの問題ではないと想定すると、これは未定義または壊れた動作ですか? 私がこのような構造体を持っている場合:- struct data { int a, b, c; }; struct data thing; それは法的にアクセスするa、bとcのように(&thing.a)[0]、(&thing.a)[1]と(&thing.a)[2]? いずれの場合も、すべてのコンパイラとプラットフォームで試してみましたが、すべての設定で「機能しました」。コンパイラがbとthing [1]が同じものであることに気付かず、 'b'へのストアがレジスターに入れられ、thing(1)がメモリーから誤った値を読み取る(たとえば)のではないかと心配しています。すべてのケースで私はそれを試したが、正しいことをした。(もちろん、それはあまり証明されていません) これは私のコードではありません。それは私が作業しなければならないコードです、これは悪いコードであるか壊れたコードであるかに興味があります。 タグ付きCおよびC ++。私は主にC ++に興味がありますが、それが異なる場合はCも興味があります。
104 c++  c  struct 

2
Goでリテラル* int64を実行するにはどうすればよいですか?
*int64フィールドを持つ構造体型があります。 type SomeType struct { SomeField *int64 } 私のコードのある時点で、これのリテラルを宣言したいと思います(たとえば、値が0でなければならないことがわかっている場合、または0を指している場合、私が何を意味するのかを知っています) instance := SomeType{ SomeField: &0, } ...これが機能しないことを除いて ./main.go:xx: cannot use &0 (type *int) as type *int64 in field value だから私はこれを試します instance := SomeType{ SomeField: &int64(0), } ...しかし、これも機能しません ./main.go:xx: cannot take the address of int64(0) どうすればよいですか?私が思いつくことができる唯一の解決策は、プレースホルダー変数を使用することです var placeholder int64 placeholder = 0 …
103 pointers  go  struct  literals 

6
構造体定義は.hまたは.cファイルに入れるべきですか?
structヘッダーのsの完全な定義と単なる宣言の両方を見てきました。1つのメソッドに他のメソッドよりも利点はありますか? それが違いを生む場合、私は通常、そのような構造体をtypedefで .h typedef struct s s_t; 編集する 明確にするために、オプションは、ヘッダーファイルでの宣言とクラスでの定義、またはヘッダーファイルでの宣言と定義の両方です。どちらを使用しても、どちらかが同じユーザビリティになるはずです。1つがリンケージによるものであっても、そうではありませんか。 私は、例えば、多くのほとんどの重複を見ていないここが、何の完全一致。この点で間違っている場合は修正してください。
102 c  header  struct 

7
Cで構造体の配列をどのように作成しますか?
私は各構造体が天体を表す構造体の配列を作ろうとしています。 私は構造体の経験があまりないため、配列全体ではなく構造体を使用することにしました。ただし、さまざまなエラーが何度も発生します。Iは、(例えば、Iは、様々なスレッド上とStackOverflowの上で見たことの技術を実装しようとしたCにおける構造体の配列及び-構造体の初期化配列Cがないそれらのすべては、適用可能でした)。 ここまで読んだ人のための詳細情報:動的である必要はありません。すべてのサイズを事前に知っている/定義しています。引数が定義されているいくつかの異なるメソッド(GLUTメソッドなど)でこれにアクセスするため、これもグローバル配列である必要があります。 これは、ヘッダーで構造体を定義する方法です。 struct body { double p[3];//position double v[3];//velocity double a[3];//acceleration double radius; double mass; }; 構造体の内部を定義する前に定義している他のグローバル変数のリストがあり、それらの1つはこの構造体の配列です(基本的に、霧の中で話すのが不明確な場合は、下の行上記のものの上にあります): struct body bodies[n]; ちょうどあなたが知ってnいるように、私が正当に定義したものです(つまり#define n 1)。 私はいくつかの異なる方法でこの配列を使用していますが、最も簡単で最もスペースを消費しない方法は、私のメインの単純化された形式です。ここで、各構造体のすべての変数を初期化します。何らかの方法で変数を変更する前に、変数を確実に設定します。 int a, b; for(a = 0; a < n; a++) { for(b = 0; b < 3; b++) { bodies[a].p[b] = 0; bodies[a].v[b] = …
100 c  arrays  struct 

6
SwiftでSCNetworkReachabilityを使用する方法
このコードスニペットをSwift に変換しようとしています。いくつかの困難のために私は地面から降りることに苦労しています。 - (BOOL) connectedToNetwork { // Create zero addy struct sockaddr_in zeroAddress; bzero(&zeroAddress, sizeof(zeroAddress)); zeroAddress.sin_len = sizeof(zeroAddress); zeroAddress.sin_family = AF_INET; // Recover reachability flags SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress); SCNetworkReachabilityFlags flags; BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags); CFRelease(defaultRouteReachability); if (!didRetrieveFlags) { return NO; } BOOL isReachable = flags …
99 ios  c  struct  swift  reachability 

1
構造体宣言の最後にあるこの[1]の目的は何ですか?
私はMSP430マイクロコントローラーのヘッダーファイルを調べていましたが、次の場所で遭遇しました<setjmp.h>。 /* r3 does not have to be saved */ typedef struct { uint32_t __j_pc; /* return address */ uint32_t __j_sp; /* r1 stack pointer */ uint32_t __j_sr; /* r2 status register */ uint32_t __j_r4; uint32_t __j_r5; uint32_t __j_r6; uint32_t __j_r7; uint32_t __j_r8; uint32_t __j_r9; uint32_t __j_r10; uint32_t __j_r11; } …

7
スウィフトと変異構造体
Swiftでの値の型の変更に関して、私が完全には理解していないことがあります。 「The Swift Programming Language」のiBookには、次の ように記載されています。デフォルトでは、値タイプのプロパティは、そのインスタンスメソッド内からは変更できません。 そして、これを可能にするために、mutating構造体と列挙型の内部でキーワードを使用してメソッドを宣言できます。 私には完全に明確ではありませんが、これは、構造体の外部から変数を変更することはできますが、独自のメソッドから変更することはできません。オブジェクト指向言語の場合と同様に、これは私には直観に反するようですが、通常は変数をカプセル化して、内部からしか変更できないようにします。構造体では、これは逆になります。詳しくは、次のコードスニペットをご覧ください。 struct Point { var x = 0, y = 0 mutating func moveToX(x: Int, andY y:Int) { //Needs to be a mutating method in order to work self.x = x self.y = y } } var p = Point(x: 1, y: 2) …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.