คำถามติดแท็ก struct

คำหลักในภาษาการเขียนโปรแกรมต่างๆที่มีไวยากรณ์คล้ายกับหรือมาจาก C (C ++, C #, Swift, Go, Rust, ฯลฯ ) ใช้แท็กภาษาการเขียนโปรแกรมเฉพาะเพื่อติดแท็กคำถามเกี่ยวกับการใช้ `struct 'เนื่องจากไวยากรณ์และซีแมนทิกส์นั้นขึ้นอยู่กับภาษา คำหลักกำหนดหรือประกาศประเภทข้อมูลที่ประกอบด้วยประเภทข้อมูลอื่น สมาชิกของโครงสร้างแต่ละคนมีพื้นที่หน่วยความจำของตัวเอง (ตรงข้ามกับ "สหภาพ" ซึ่งสมาชิกแบ่งปันพื้นที่หน่วยความจำเดียว)


9
โครงสร้างช่องว่างภายในและการบรรจุ
พิจารณา: struct mystruct_A { char a; int b; char c; } x; struct mystruct_B { int b; char a; } y; ขนาดของโครงสร้างคือ 12 และ 8 ตามลำดับ โครงสร้างเหล่านี้มีเบาะหรือบรรจุ? การขยายหรือการบรรจุเกิดขึ้นเมื่อใด
209 c  struct  structure  padding  packing 

20
โครงสร้างเหมือนวัตถุใน Java
มันผิดกับวิธีของจาวาในการสร้างโครงสร้างเหมือนวัตถุหรือไม่ class SomeData1 { public int x; public int y; } ฉันสามารถดูคลาสที่มี accessors และ mutators เป็น Java มากกว่า class SomeData2 { int getX(); void setX(int x); int getY(); void setY(int y); private int x; private int y; } ชั้นเรียนจากตัวอย่างแรกนั้นใช้งานไม่สะดวก // a function in a class public int f(SomeData1 d) { …
195 java  oop  struct 

9
เมื่อใดที่ฉันควรใช้ Struct vs. OpenStruct
โดยทั่วไปแล้วข้อดีและข้อเสียของการใช้ OpenStruct เมื่อเปรียบเทียบกับโครงสร้างคืออะไร กรณีการใช้งานทั่วไปประเภทใดที่เหมาะสมกับแต่ละกรณี
184 ruby  struct 


4
ฉันจะทำให้ค่าเริ่มต้นสมาชิกแบบเริ่มต้นเป็นสาธารณะโดยค่าเริ่มต้นสำหรับ structs ใน Swift ได้อย่างไร
ฉันมีกรอบที่รวดเร็วที่กำหนดโครงสร้าง: public struct CollectionTO { var index: Order var title: String var description: String } อย่างไรก็ตามฉันไม่สามารถใช้ initializer ที่ชาญฉลาดของสมาชิกโดยปริยายจากโครงการอื่นที่นำเข้าห้องสมุด ข้อผิดพลาดคือ 'CollectionTO' ไม่สามารถเริ่มต้นได้เนื่องจากไม่มี initialisers ที่สามารถเข้าถึงได้ นั่นคือมันไม่ได้ให้ค่าปริยายของสมาชิกเริ่มต้นที่ฉลาดโดยใช้คำสำคัญสาธารณะ var collection1 = CollectionTO(index: 1, title: "New Releases", description: "All the new releases") ฉันต้องเพิ่มวิธีการเริ่มต้นของตัวเองเช่น: public struct CollectionTO { var index: Order var title: String var description: …

10
มีข้อเสียในการผ่าน structs ตามค่าใน C แทนที่จะส่งตัวชี้หรือไม่?
มีข้อเสียในการผ่าน structs ตามค่าใน C แทนที่จะส่งตัวชี้หรือไม่? หาก struct มีขนาดใหญ่จะเห็นได้ชัดว่าการดำเนินการด้านการคัดลอกข้อมูลจำนวนมาก แต่สำหรับโครงสร้างที่มีขนาดเล็กก็ควรจะเหมือนกับการส่งผ่านค่าหลายค่าไปยังฟังก์ชัน มันอาจจะน่าสนใจยิ่งขึ้นเมื่อใช้เป็นค่าตอบแทน C มีค่าส่งคืนเดียวจากฟังก์ชัน แต่บ่อยครั้งที่คุณต้องการหลายค่า ดังนั้นวิธีง่ายๆคือใส่พวกมันไว้ในโครงสร้างและคืนสิ่งนั้น มีเหตุผลอะไรหรือขัดกับสิ่งนี้? เนื่องจากอาจไม่ชัดเจนสำหรับทุกคนที่ฉันกำลังพูดถึงที่นี่ฉันจะยกตัวอย่างง่ายๆ หากคุณกำลังเขียนโปรแกรมใน C คุณจะเริ่มเขียนฟังก์ชันที่มีลักษณะดังนี้: void examine_data(const char *ptr, size_t len) { ... } char *p = ...; size_t l = ...; examine_data(p, l); นี่ไม่ใช่ปัญหา ปัญหาเดียวคือคุณต้องเห็นด้วยกับเพื่อนร่วมงานของคุณซึ่งลำดับพารามิเตอร์ควรเป็นเช่นนั้นเพื่อให้คุณใช้หลักการเดียวกันในทุกฟังก์ชั่น แต่จะเกิดอะไรขึ้นเมื่อคุณต้องการส่งคืนข้อมูลประเภทเดียวกัน โดยปกติคุณจะได้รับสิ่งนี้: char *get_data(size_t *len); { ... *len = ...datalen...; …

5
การประกาศโดยนัยที่เข้ากันไม่ได้ของฟังก์ชันในตัว 'malloc'
ฉันได้รับข้อผิดพลาดนี้: คำเตือน: การประกาศโดยนัยที่เข้ากันไม่ได้ของฟังก์ชันในตัว 'malloc' ฉันพยายามทำสิ่งนี้: fileinfo_list* tempList = malloc(sizeof(fileinfo_list)); สำหรับการอ้างอิงโครงสร้างที่ใช้ในมือคือ: typedef struct { fileinfo** filedata; size_t nFiles; size_t size; size_t fileblock; } fileinfo_list; ฉันไม่เห็นอะไรผิดปกติกับสิ่งที่ฉันทำ ฉันแค่การสร้างtempListที่มีขนาด 1 fileinfo_listx
155 c  struct  malloc 

8
ข้อผิดพลาด:“ ไม่สามารถแก้ไขค่าที่ส่งคืนได้” c #
ฉันใช้คุณสมบัติที่ใช้งานอัตโนมัติ ฉันเดาวิธีที่เร็วที่สุดในการแก้ไขปัญหาต่อไปนี้คือการประกาศตัวแปรสำรองของฉันเอง public Point Origin { get; set; } Origin.X = 10; // fails with CS1612 ข้อความแสดงข้อผิดพลาด: ไม่สามารถแก้ไขค่าที่ส่งคืนของ 'expression' ได้เนื่องจากไม่ใช่ตัวแปร มีความพยายามในการแก้ไขชนิดของค่าที่เป็นผลลัพธ์ของนิพจน์กลาง เนื่องจากค่าไม่คงอยู่ค่าจะไม่เปลี่ยนแปลง เมื่อต้องการแก้ไขข้อผิดพลาดนี้ให้เก็บผลลัพธ์ของนิพจน์ในค่าระดับกลางหรือใช้ประเภทการอ้างอิงสำหรับนิพจน์กลาง

6
วิธีตั้งค่าเริ่มต้นใน Go structs
มีคำตอบ / เทคนิคหลายประการสำหรับคำถามด้านล่าง: จะตั้งค่าเริ่มต้นเป็นโครงสร้าง golang ได้อย่างไร? วิธีการเริ่มต้นโครงสร้างใน golang ฉันมีคำตอบสองสามข้อ แต่จำเป็นต้องมีการอภิปรายเพิ่มเติม

5
กำหนดโครงสร้างหนึ่งให้กับโครงสร้างอื่นใน C.
คุณสามารถกำหนดหนึ่งอินสแตนซ์ของโครงสร้างให้กับอีกคนหนึ่งได้เช่น: struct Test t1; struct Test t2; t2 = t1; ฉันเคยเห็นมันใช้งานได้กับโครงสร้างที่เรียบง่าย แต่ bu ทำงานกับโครงสร้างที่ซับซ้อนได้หรือไม่ คอมไพเลอร์รู้วิธีการคัดลอกรายการข้อมูลอย่างไรโดยขึ้นอยู่กับประเภทของมันเช่นการแยกแยะระหว่างintสตริงและสตริง
146 c  struct 

13
การเริ่มต้นโครงสร้าง C ++ ที่สะดวก
ฉันกำลังพยายามหาวิธีที่สะดวกในการเริ่มต้นโครงสร้าง C ++ 'pod' ตอนนี้พิจารณาโครงสร้างต่อไปนี้: struct FooBar { int foo; float bar; }; // just to make all examples work in C and C++: typedef struct FooBar FooBar; หากฉันต้องการเริ่มต้นสิ่งนี้อย่างสะดวกใน C (!) ฉันสามารถเขียน: /* A */ FooBar fb = { .foo = 12, .bar = 3.4 }; // illegal C++, legal …

2
วิธีกำหนดแท็กชื่อหลายแท็กในโครงสร้าง
ฉันต้องการรับไอเท็มจากฐานข้อมูล mongo ดังนั้นฉันจึงกำหนดโครงสร้างแบบนี้ type Page struct { PageId string `bson:"pageId"` Meta map[string]interface{} `bson:"meta"` } ตอนนี้ฉันต้องเข้ารหัสเป็น JSON ด้วย แต่มันเข้ารหัสฟิลด์เป็นตัวพิมพ์ใหญ่ (ฉันได้รับ PageId แทนที่จะเป็น pageId) ดังนั้นฉันต้องกำหนดแท็กฟิลด์สำหรับ JSON ด้วย ฉันลองทำสิ่งนี้แล้วแต่ไม่ได้ผล: type Page struct { PageId string `bson:"pageId",json:"pageId"` Meta map[string]interface{} `bson:"meta",json:"pageId"` } แล้วสิ่งนี้จะทำได้อย่างไรกำหนดแท็กชื่อหลายแท็กในโครงสร้าง?
143 json  struct  go 

9
นิยามโครงสร้างอ้างอิงตนเอง?
ฉันไม่ได้เขียน C มานานมากแล้วดังนั้นฉันจึงไม่แน่ใจว่าฉันควรจะทำสิ่งที่เรียกซ้ำเหล่านี้อย่างไร ... ฉันต้องการให้แต่ละเซลล์มีเซลล์อื่น แต่ฉันได้รับข้อผิดพลาด บรรทัด "field" child "มีประเภทที่ไม่สมบูรณ์" ว่าไง? typedef struct Cell { int isParent; Cell child; } Cell;
137 c  recursion  struct  typedef 


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.