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

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

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 …

12
C ++ Tuple เทียบกับโครงสร้าง
มีความแตกต่างระหว่างการใช้ a std::tupleและ data-only structหรือไม่? typedef std::tuple<int, double, bool> foo_t; struct bar_t { int id; double value; bool dirty; } จากสิ่งที่ฉันพบทางออนไลน์ฉันพบว่ามีความแตกต่างที่สำคัญสองประการstructคืออ่านได้มากขึ้นในขณะที่tupleมีฟังก์ชันทั่วไปมากมายที่สามารถใช้ได้ ควรมีความแตกต่างของประสิทธิภาพอย่างมีนัยสำคัญหรือไม่? นอกจากนี้เค้าโครงข้อมูลยังใช้งานร่วมกันได้ (หล่อสลับกัน)
96 c++  struct  tuples 

10
โครงสร้างเทียบกับคลาส
ฉันกำลังจะสร้าง 100,000 วัตถุในรหัส มีขนาดเล็กมีเพียง 2 หรือ 3 คุณสมบัติ ฉันจะใส่ไว้ในรายการทั่วไปและเมื่อพวกเขาเป็นห่วงฉันจะให้พวกเขาและความคุ้มค่าการตรวจสอบและความคุ้มค่าการปรับปรุงอาจจะab การสร้างวัตถุเหล่านี้เป็นคลาสหรือโครงสร้างเร็วขึ้น / ดีขึ้นหรือไม่ แก้ไข ก. คุณสมบัติเป็นประเภทค่า (ยกเว้นสตริงที่ฉันคิด?) ข. พวกเขาอาจ (เรายังไม่แน่ใจ) มีวิธีตรวจสอบ แก้ไข 2 ฉันสงสัยว่า: อ็อบเจ็กต์บนฮีปและสแต็กประมวลผลโดยตัวเก็บขยะเท่า ๆ กันหรือไม่หรือทำงานแตกต่างกัน?
95 c#  struct 

9
ปลอดภัยสำหรับโครงสร้างในการใช้อินเทอร์เฟซหรือไม่?
ฉันดูเหมือนจะจำได้ว่าอ่านบางอย่างเกี่ยวกับการที่โครงสร้างในการใช้อินเทอร์เฟซใน CLR ผ่าน C # ไม่ดี แต่ดูเหมือนว่าฉันจะไม่พบอะไรเลย มันแย่ไหม? มีผลที่ไม่พึงประสงค์จากการทำเช่นนั้นหรือไม่? public interface Foo { Bar GetBar(); } public struct Fubar : Foo { public Bar GetBar() { return new Bar(); } }
94 c#  interface  struct 

6
เหตุใด C ++ จึงไม่อนุญาตโครงสร้างที่ไม่ระบุตัวตน
คอมไพเลอร์ C ++ บางตัวอนุญาตให้ใช้สหภาพและโครงสร้างที่ไม่ระบุชื่อเป็นส่วนขยายของ C ++ มาตรฐาน มันเป็นน้ำตาลที่มีประโยชน์มากในบางครั้ง อะไรคือเหตุผลที่ป้องกันไม่ให้สิ่งนี้เป็นส่วนหนึ่งของมาตรฐาน? มี Roadblock ทางเทคนิคหรือไม่? ปรัชญา? หรือแค่ไม่เพียงพอที่จะต้องพิสูจน์? นี่คือตัวอย่างของสิ่งที่ฉันกำลังพูดถึง: struct vector3 { union { struct { float x; float y; float z; }; float v[3]; }; }; คอมไพเลอร์ของฉันจะยอมรับเรื่องนี้ แต่ก็เตือนว่า"นิรนาม struct / ยูเนี่ยน" เป็นส่วนขยายที่ไม่ได้มาตรฐานที่ C
93 c++  struct  unions 

2
ฟังก์ชันสำหรับโครงสร้าง C ++
โดยปกติเราสามารถกำหนดตัวแปรสำหรับโครงสร้าง C ++ ได้เช่นเดียวกับใน struct foo { int bar; }; เราสามารถกำหนดฟังก์ชันสำหรับโครงสร้างได้หรือไม่? เราจะใช้ฟังก์ชันเหล่านั้นอย่างไร?
93 c++  function  struct 

9
เริ่มต้น / รีเซ็ตโครงสร้างเป็นศูนย์ / ศูนย์
struct x { char a[10]; char b[20]; int i; char *c; char *d[10]; }; ฉันเติมโครงสร้างนี้แล้วใช้ค่า ในการทำซ้ำครั้งถัดไปฉันต้องการรีเซ็ตฟิลด์ทั้งหมดเป็น0หรือnullก่อนที่จะเริ่มใช้ซ้ำ ฉันจะทำเช่นนั้นได้อย่างไร? ใช้ได้memsetไหมหรือต้องผ่านสมาชิกทั้งหมดแล้วทำทีละคน

6
ตัวแปรสมาชิกที่ไม่ได้ใช้ใช้หน่วยความจำหรือไม่?
การเตรียมใช้งานตัวแปรสมาชิกและไม่อ้างถึง / ใช้งานจะใช้ RAM เพิ่มเติมในระหว่างรันไทม์หรือคอมไพเลอร์ไม่สนใจตัวแปรนั้น struct Foo { int var1; int var2; Foo() { var1 = 5; std::cout << var1; } }; ในตัวอย่างข้างต้นสมาชิก 'var1' จะได้รับค่าที่แสดงในคอนโซล อย่างไรก็ตาม 'Var2' ไม่ได้ใช้เลย ดังนั้นการเขียนลงในหน่วยความจำระหว่างรันไทม์จะเป็นการสิ้นเปลืองทรัพยากร คอมไพลเลอร์นำสถานการณ์เหล่านี้มาใช้ในบัญชีและไม่สนใจตัวแปรที่ไม่ได้ใช้หรืออ็อบเจ็กต์ Foo มีขนาดเท่ากันเสมอไม่ว่าจะใช้สมาชิกหรือไม่
92 c++  memory  struct 

5
ทำไมโครงสร้างขนาด 3 แทนที่จะเป็น 2
ฉันได้กำหนดโครงสร้างนี้: typedef struct { char A:3; char B:3; char C:3; char D:3; char E:3; } col; sizeof(col)ให้ฉันเอาท์พุทของ 3 แต่ไม่ควรจะเป็น 2 หรือไม่? ถ้าฉันแสดงความคิดเห็นเพียงองค์ประกอบเดียวsizeofคือ 2 ฉันไม่เข้าใจว่าทำไม: ห้าองค์ประกอบของ 3 บิตเท่ากับ 15 บิตและน้อยกว่า 2 ไบต์ มี "ขนาดภายใน" ในการกำหนดโครงสร้างเช่นนี้หรือไม่? ฉันแค่ต้องการคำชี้แจงเพราะจากความคิดของฉันเกี่ยวกับภาษาจนถึงตอนนี้ฉันคาดว่าจะมีขนาด 2 ไบต์ไม่ใช่ 3
91 c++  c  struct 

11
วิธีที่ดีที่สุดในการวางโครงสร้าง c ใน NSArray คืออะไร?
วิธีปกติในการจัดเก็บโครงสร้าง c ใน an NSArrayคืออะไร? ข้อดีข้อเสียการจัดการหน่วยความจำ? โดยเฉพาะอย่างยิ่งความแตกต่างระหว่างvalueWithBytesและvalueWithPointer - เลี้ยงโดยจัสตินกับปลาดุกด้านล่างคืออะไร นี่คือลิงค์ไปยังการสนทนาของ Apple valueWithBytes:objCType:สำหรับผู้อ่านในอนาคต ... สำหรับการคิดด้านข้างและดูประสิทธิภาพมากขึ้น Evgen ได้ยกประเด็นการใช้งาน STL::vectorในC ++ (นั่นทำให้เกิดประเด็นที่น่าสนใจคือมีไลบรารี c แบบเร็วซึ่งไม่ต่างจากSTL::vectorแต่เบากว่ามากที่ช่วยให้ "จัดการอาร์เรย์เป็นระเบียบเรียบร้อยน้อยที่สุด ... ?) ดังนั้นคำถามเดิม ... ตัวอย่างเช่น: typedef struct _Megapoint { float w,x,y,z; } Megapoint; ดังนั้น: อะไรคือวิธีปกติที่ดีที่สุดและเป็นสำนวนในการจัดเก็บโครงสร้างของตัวเองในรูปแบบ NSArrayนั้นและคุณจัดการกับหน่วยความจำในสำนวนนั้นอย่างไร โปรดทราบว่าฉันกำลังมองหาสำนวนปกติเพื่อจัดเก็บโครงสร้างโดยเฉพาะ แน่นอนเราสามารถหลีกเลี่ยงปัญหานี้ได้โดยการสร้างชั้นเรียนเล็ก ๆ ใหม่ อย่างไรก็ตามฉันต้องการทราบว่าสำนวนปกติสำหรับการวางโครงสร้างในอาร์เรย์เป็นอย่างไรขอบคุณ BTW นี่คือแนวทาง NSData ซึ่งอาจเป็น? ไม่ดีที่สุด ... Megapoint …

5
เหตุใดประเภท Tuple ใหม่ใน. Net 4.0 จึงเป็นประเภทอ้างอิง (คลาส) และไม่ใช่ชนิดค่า (โครงสร้าง)
ไม่มีใครรู้คำตอบและ / หรือมีความคิดเห็นเกี่ยวกับเรื่องนี้? เนื่องจากโดยปกติสิ่งทอจะมีขนาดไม่ใหญ่มากฉันจึงคิดว่าการใช้โครงสร้างจะเหมาะสมกว่าคลาสสำหรับสิ่งเหล่านี้ คุณพูดอะไร?

6
ส่งคืนค่าสองค่า Tuple vs 'out' vs 'struct'
พิจารณาฟังก์ชันที่คืนค่าสองค่า เราสามารถเขียน: // Using out: string MyFunction(string input, out int count) // Using Tuple class: Tuple<string, int> MyFunction(string input) // Using struct: MyStruct MyFunction(string input) ข้อใดเป็นแนวทางปฏิบัติที่ดีที่สุดและเพราะเหตุใด
88 c#  struct  tuples  out  value-type 

5
เหตุใด C และ C ++ จึงสนับสนุนการกำหนดอาร์เรย์แบบสมาชิกภายในโครงสร้าง แต่โดยทั่วไปแล้วไม่ใช่
ฉันเข้าใจว่าไม่รองรับการกำหนดอาร์เรย์แบบสมาชิกดังนั้นสิ่งต่อไปนี้จะใช้ไม่ได้: int num1[3] = {1,2,3}; int num2[3]; num2 = num1; // "error: invalid array assignment" ฉันเพิ่งยอมรับสิ่งนี้ว่าเป็นความจริงโดยคิดว่าจุดมุ่งหมายของภาษาคือการจัดเตรียมเฟรมเวิร์กแบบปลายเปิดและให้ผู้ใช้ตัดสินใจว่าจะใช้บางสิ่งบางอย่างเช่นการคัดลอกอาร์เรย์อย่างไร อย่างไรก็ตามสิ่งต่อไปนี้ใช้งานได้: struct myStruct { int num[3]; }; struct myStruct struct1 = {{1,2,3}}; struct myStruct struct2; struct2 = struct1; อาร์เรย์num[3]เป็นสมาชิกที่กำหนดจากอินสแตนซ์ในstruct1อินสแตนซ์ในstruct2. เหตุใดการมอบหมายอาร์เรย์ที่ชาญฉลาดของสมาชิกจึงได้รับการสนับสนุนสำหรับโครงสร้าง แต่โดยทั่วไปไม่ได้รับการสนับสนุน แก้ไข : ความคิดเห็นของRoger Pateในเธรดstd :: string ใน struct - ปัญหาการคัดลอก / การกำหนด? ดูเหมือนจะชี้ไปในทิศทางทั่วไปของคำตอบ …

3
เค้าโครงหน่วยความจำโครงสร้างใน C
ฉันมีพื้นหลัง C # ฉันเป็นมือใหม่มากสำหรับภาษาระดับต่ำเช่น C ใน C # structหน่วยความจำของคอมไพเลอร์จะจัดวางโดยค่าเริ่มต้น คอมไพเลอร์สามารถเรียงลำดับฟิลด์ข้อมูลใหม่หรือวางบิตเพิ่มเติมระหว่างฟิลด์โดยปริยาย ดังนั้นฉันต้องระบุแอตทริบิวต์พิเศษบางอย่างเพื่อแทนที่พฤติกรรมนี้สำหรับรูปแบบที่แน่นอน AFAIK, C จะไม่เรียงลำดับใหม่หรือจัดรูปแบบหน่วยความจำของ a structตามค่าเริ่มต้น อย่างไรก็ตามฉันได้ยินมาว่ามีข้อยกเว้นเล็กน้อยที่หาได้ยากมาก ลักษณะการจัดวางหน่วยความจำของ C คืออะไร? สิ่งที่ควรเรียงใหม่ / จัดตำแหน่งและไม่?

4
ARC ห้ามอ็อบเจ็กต์ Objective-C ในโครงสร้างหรือยูเนี่ยนแม้จะทำเครื่องหมายไฟล์ -fno-objc-arc
ARC ห้ามวัตถุ Objective-C ในโครงสร้างหรือสหภาพแรงงานแม้จะทำเครื่องหมายไฟล์ -fno-objc-arc? ทำไมจึงเป็นเช่นนั้น? ฉันมีข้อสันนิษฐานว่าถ้าคุณทำเครื่องหมาย -fno-objc-arc คุณจะไม่มีข้อ จำกัด นี้

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