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

C เป็นภาษาโปรแกรมคอมพิวเตอร์ทั่วไปที่ใช้สำหรับระบบปฏิบัติการเกมและงานที่มีประสิทธิภาพสูงอื่น ๆ

2
เหตุใด C ใช้เครื่องหมายดอกจันสำหรับพอยน์เตอร์ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันเพิ่งจะเรียนรู้เกี่ยวกับ C. ฉันคิดว่ามันแปลกที่ผู้สร้างเลือกเครื่องหมายดอกจัน ( *) เป็นสัญลักษณ์สำหรับพอยน์เตอร์แทนที่จะเป็นสัญลักษณ์ที่ดูเหมือนตัวชี้ ( ->) พิจารณาว่าตัวชี้การลงทะเบียนและฟังก์ชั่นที่ทำให้เกิดความสับสนสามารถมีเหตุผลทางประวัติศาสตร์หรือทางปฏิบัติได้หรือไม่สำหรับการใช้เครื่องหมายดอกจัน
21 c  history  syntax 

11
ในบางครั้งรหัสแฝงต่ำต้อง“ น่าเกลียด” หรือไม่
(นี่คือจุดมุ่งหมายหลักที่ผู้ที่มีความรู้เฉพาะเกี่ยวกับระบบเวลาแฝงต่ำเพื่อหลีกเลี่ยงคนที่เพิ่งตอบด้วยความคิดเห็นที่ไม่พร้อมเพรียง) คุณรู้สึกว่ามีการแลกเปลี่ยนระหว่างการเขียนโค้ด "ดี" ของโอเรียนท์กับการเขียนโค้ดเวลาแฝงที่ต่ำมาก ๆ หรือไม่? ตัวอย่างเช่นการหลีกเลี่ยงฟังก์ชั่นเสมือนจริงใน C ++ / ค่าโสหุ้ยของ polymorphism เป็นต้นการเขียนโค้ดที่ดูน่ารังเกียจ แต่มันเร็วมากหรือเปล่า? มันยืนอยู่กับเหตุผล - ใครสนใจว่ามันดูน่าเกลียด (ตราบใดที่มันบำรุงรักษาได้) - ถ้าคุณต้องการความเร็วคุณต้องการความเร็ว ฉันจะสนใจที่จะได้ยินจากคนที่ทำงานในพื้นที่ดังกล่าว
21 java  c++  c  performance  latency 

6
การตรวจสอบ“ โมฆะ” ใน C หรือ C ++ หมายถึงอะไร
ฉันได้เรียนรู้ภาษาซีพลัสพลัสและฉันก็เข้าใจปัญหาได้ยาก โดยเฉพาะอย่างยิ่งบทเรียนที่ฉันได้อ่านพูดถึงการทำ "ตรวจสอบโมฆะ" แต่ฉันไม่แน่ใจว่ามันหมายถึงอะไรหรือทำไมมันจำเป็น อะไรที่เป็นโมฆะ? "ตรวจสอบค่าว่าง" หมายความว่าอย่างไร ฉันจำเป็นต้องตรวจสอบค่าว่างเสมอหรือไม่? ตัวอย่างโค้ดใด ๆ จะได้รับการชื่นชมมาก
21 c++  c  null 

8
งานใหม่สำหรับนักพัฒนาอาวุโส
ฉันมีนักพัฒนาอาวุโสที่มีประสบการณ์แปดปีของ. NET เริ่มตั้งแต่วันพรุ่งนี้เพื่อทำงานกับแอปพลิเคชัน 11,000 บรรทัด ในทีมมีตัวฉันและโปรแกรมเมอร์คนอื่น เราทั้งคู่มีประสบการณ์ประมาณสามปีในแต่ละครั้ง มันเป็นโครงการแรกของฉันในฐานะผู้จัดการ (ฉันก็เป็นผู้พัฒนาโครงการด้วยเช่นกัน) และนี่เป็นครั้งแรกที่ฉันต้องแนะนำใครสักคนให้รู้จักกับรหัสฐานที่สร้างไว้แล้ว เห็นได้ชัดว่าฉันจะข้ามแต่ละโมดูลกระบวนการปรับใช้ ฯลฯ และมอบตำแหน่งของที่เก็บแหล่งควบคุมเอกสารประกอบ (ซึ่งไม่ได้ดีที่สุด) เป็นต้น ฉันควรให้พวกเขานานแค่ไหนก่อนที่พวกเขาจะพร้อมที่จะเริ่มเขียนคุณสมบัติใหม่และแก้ไขข้อบกพร่อง?

9
C แตกต่างจาก C ++ อย่างไร
หลายคนบอกว่า C ++ เป็นภาษาที่แตกต่างจาก C อย่างสิ้นเชิง แต่ Bjarne เองก็บอกว่า C ++ เป็นภาษาที่ต่อจาก C ดังนั้นจึงเป็นที่++มาของภาษานั้น เหตุใดทุกคนจึงบอกว่า C และ C ++ เป็นภาษาที่แตกต่างอย่างสิ้นเชิง? C แตกต่างจาก C ++ อย่างไรบ้างนอกเหนือจากคุณสมบัติเพิ่มเติมใน C ++

2
ทำไม Java จึงไม่ใส่ชื่อไฟล์ลงไป?
ใน C และ C ++, วิธีการหลักเก็บชื่อไฟล์ในตำแหน่งแรกของอาร์เรย์ที่ argv [0] อย่างไรก็ตามใน Java ชื่อไฟล์จะไม่รวมอยู่ในอาร์เรย์สตริง args มีเหตุผลในทางปฏิบัติสำหรับสิ่งนี้หรือไม่? ฉันเข้าใจว่าสิ่งนี้ทำให้การวนซ้ำผ่านอาร์กิวเมนต์บรรทัดคำสั่ง 0-based แทน 1-based แต่มีประโยชน์ไหม? ชื่อไฟล์นั้นถือว่าไร้ประโยชน์หรือไม่?
20 java  c++  c 

1
เหตุใด C ไลบรารีใช้แมโครและฟังก์ชันที่มีชื่อเดียวกัน
ฉันกำลังอ่าน 'ห้องสมุดมาตรฐาน C' โดย PJ Plauger ซึ่งน่าสนใจจริงๆ หนังสือเล่มนี้ไม่เพียง แต่อธิบายวิธีการใช้ห้องสมุด แต่ยังอธิบายถึงวิธีการนำไปใช้งาน ฉันอ่านctype.hส่วนเสร็จแล้วและในส่วนหัวฟังก์ชั่นจะประกาศเป็นทั้งมาโครและฟังก์ชั่น ตัวอย่างเช่น int isdigit(int); แต่ยัง #define isdigit(c) (_Ctype[(int)(c)] & _DI) ฉันไม่เข้าใจว่าทำไมใช้ทั้งคู่ นอกจากนี้ถ้าฉันพยายามสร้างctypeส่วนหัวที่กำหนดเองและการนำไปใช้ใหม่ฉันสามารถรวบรวมได้สำเร็จถ้าฉันลบแมโครออก (ใส่เครื่องหมายความคิดเห็นในการกำหนด) แง่มุมนี้ไม่ได้อธิบายในหนังสือ ใครช่วยอธิบายหน่อยได้ไหม?
20 c  naming  functions  macros 

13
ทำไมระบบปฏิบัติการถึงมีข้อมูลระดับต่ำใน C และ C ++ ทำไมไม่ใช่แค่ C ++?
ในหน้า Wikipedia สำหรับ Windowsจะระบุว่า Windows เขียนไว้ใน Assembly สำหรับ bootloader และ task switcher และ C และ C ++ สำหรับเคอร์เนลรูทีน IIRC คุณสามารถเรียกใช้ฟังก์ชัน C ++ ได้จากextern "C"'d block ฉันสามารถใช้ C สำหรับฟังก์ชั่นเคอร์เนลเพื่อให้แอป C บริสุทธิ์สามารถใช้งานได้ (เช่นprintfและอย่างนั้น) แต่ถ้าพวกเขาสามารถห่อในextern "C "บล็อกแล้วทำไมต้องใช้รหัสใน C?

2
ตัวอย่างการทดสอบหน่วยที่ดีสำหรับนักพัฒนา C ฝังตัว [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ฉันจะพูดคุยกับแผนกของฉันในสัปดาห์หน้าเกี่ยวกับการทดสอบหน่วยและการพัฒนาที่เน้นการทดสอบ เป็นส่วนหนึ่งของเรื่องนี้ฉันจะแสดงตัวอย่างจริงจากรหัสบางอย่างที่ฉันเขียนเมื่อเร็ว ๆ นี้ แต่ฉันยังต้องการแสดงตัวอย่างง่ายๆที่ฉันจะเขียนในการพูดคุย ฉันค้นหาตัวอย่างที่ดีจากเว็บ แต่ฉันพยายามหาสิ่งที่เหมาะสมกับการพัฒนาของเราโดยเฉพาะ ซอฟต์แวร์เกือบทั้งหมดที่เราเขียนนั้นเป็นระบบควบคุมฝังตัวลึกที่ทำงานบนไมโครคอนโทรลเลอร์ขนาดเล็ก มีรหัส C จำนวนมากที่ใช้งานได้ง่ายกับการทดสอบหน่วย (ฉันจะพูดถึงการทดสอบหน่วยบนพีซีแทนที่จะเป็นเป้าหมายเอง) ตราบใดที่คุณยังไม่ชัดเจนในเลเยอร์ 'ก้น': สิ่งที่พูดถึงโดยตรง ไปยังอุปกรณ์ต่อพ่วงไมโครคอนโทรลเลอร์ อย่างไรก็ตามตัวอย่างส่วนใหญ่ที่ฉันพบมักใช้การประมวลผลแบบสตริง (เช่นตัวอย่างตัวเลข Dive Into Python เลขโรมันที่ยอดเยี่ยม) และเนื่องจากเราแทบจะไม่เคยใช้สตริงสิ่งนี้จึงไม่เหมาะ (เกี่ยวกับฟังก์ชันไลบรารีเท่านั้นโดยทั่วไปแล้วโค้ดของเราใช้ มีmemcpy, memcmpและmemset,strcat หรือนิพจน์ทั่วไปไม่ถูกต้อง) ดังนั้นในคำถาม: ทุกคนสามารถเสนอตัวอย่างที่ดีของฟังก์ชั่นที่ฉันสามารถใช้เพื่อสาธิตการทดสอบหน่วยในเซสชั่นสดได้หรือไม่? คำตอบที่ดีในความเห็น (อาจมีการเปลี่ยนแปลง) ของฉันอาจจะ: ฟังก์ชั่นที่เรียบง่ายพอที่ทุกคน (แม้กระทั่งผู้ที่เขียนโค้ดเป็นครั้งคราว) สามารถเข้าใจได้ ฟังก์ชั่นที่ไม่ปรากฏว่าไม่มีจุดหมาย (เช่นการทำพาริตีหรือซีอาร์ซีน่าจะดีกว่าฟังก์ชั่นที่คูณสองตัวเลขด้วยกันและเพิ่มค่าคงที่แบบสุ่ม); ฟังก์ชั่นที่สั้นพอที่จะเขียนต่อหน้าผู้คน (ฉันอาจใช้ประโยชน์จากคลิปบอร์ดมากมายของ …

10
ตัวชี้ / การเรียกซ้ำเป็นเรื่องยากอะไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ในอันตรายของโรงเรียนจาวาโจเอลกล่าวถึงประสบการณ์ของเขาที่เพนน์และความยากลำบากของ "การแบ่งส่วนความผิดพลาด" เขาพูดว่า [segfaults นั้นยากจนกระทั่งคุณ] "หายใจลึก ๆ และพยายามบังคับจิตใจของคุณให้ทำงานในระดับนามธรรมที่แตกต่างกันสองระดับพร้อมกัน" จากรายการสาเหตุทั่วไปของsegfaults ฉันไม่เข้าใจว่าเราต้องทำงานในระดับนามธรรมได้อย่างไร ด้วยเหตุผลบางอย่างโจเอลพิจารณาแนวคิดหลักเหล่านี้เป็นความสามารถของโปรแกรมเมอร์ในการสรุป ฉันไม่ต้องการคิดมากเกินไป ดังนั้นอะไรที่เป็นเรื่องยากสำหรับพอยน์เตอร์ / การเรียกซ้ำ? ตัวอย่างจะดี
20 c  pointers  recursion 

2
ทุกคนสามารถอธิบายการเป็นตัวแทนของโฟลตในหน่วยความจำได้หรือไม่?
นี่ไม่ใช่คำถามซ้ำซ้อนเมื่อฉันอ่านคำถามก่อนหน้า how float values are stored in the memoryทุกคนสามารถช่วยในการทำความเข้าใจ ข้อสงสัยของฉันอยู่ที่นี่ค่าลอยมี ' .'( for example 3.45) วิธี'.'จะแสดงในหน่วยความจำ? ใครช่วยอธิบายแผนที่ด้วยฉันได้ไหม?

1
ประวัติของการตั้งชื่อค่าคงที่ในตัวพิมพ์ใหญ่ทั้งหมดคืออะไร?
ประวัติศาสตร์ที่อยู่เบื้องหลังการประชุมของการตั้งชื่อค่าคงที่ในตัวพิมพ์ใหญ่ทั้งหมดคืออะไร? สัญชาตญาณของฉันคือมันเริ่มต้นด้วยตัวประมวลผลล่วงหน้า C ซึ่งผู้คนพัฒนาวิธีปฏิบัติเพื่อตั้งชื่อมาโครตัวประมวลผลล่วงหน้าในตัวพิมพ์ใหญ่ทั้งหมดเพื่อให้พวกเขาอาศัยอยู่ในเนมสเปซแยกกันอย่างมีประสิทธิภาพ ความเชื่อของฉันคือว่าการปฏิบัตินี้ถูกเข้าใจผิดและ bastardized เพื่อนำไปใช้กับค่าคงที่ที่ไม่ใช่ preprocessor ด้วย ( enums, constตัวแปร) การตั้งชื่อมาโครตัวประมวลผลล่วงหน้าในตัวพิมพ์ใหญ่ทั้งหมดนั้นมีประโยชน์สำหรับฉันจริงๆ การตั้งชื่อค่าคงที่ทั่วไปนั้นไม่มาก (และต่อต้านหากสร้างการชนด้วยชื่อแมโคร) ฉันอยู่นอกฐานหรือไม่ การฝึกฝนการใช้ประโยชน์จากตัวพิมพ์ใหญ่ยังคงอยู่ก่อนวันที่ C หรือไม่?

4
ทำไมเราต้องพูดถึงชนิดข้อมูลของตัวแปรใน C
โดยปกติใน C เราต้องบอกคอมพิวเตอร์ถึงชนิดของข้อมูลในการประกาศตัวแปร เช่นในโปรแกรมต่อไปนี้ฉันต้องการพิมพ์ผลรวมของตัวเลขทศนิยมสองตัว X และ Y #include<stdio.h> main() { float X=5.2; float Y=5.1; float Z; Z=Y+X; printf("%f",Z); } ฉันต้องบอกคอมไพเลอร์ถึงชนิดของตัวแปร X คอมไพเลอร์ไม่สามารถระบุประเภทของXตัวเองได้หรือไม่ ใช่มันสามารถทำได้ถ้าฉันทำสิ่งนี้: #define X 5.2 ตอนนี้ฉันสามารถเขียนโปรแกรมโดยไม่บอกคอมไพเลอร์Xว่าเป็น: #include<stdio.h> #define X 5.2 main() { float Y=5.1; float Z; Z=Y+X; printf("%f",Z); } ดังนั้นเราจะเห็นว่าภาษา C มีคุณสมบัติบางอย่างที่ใช้ซึ่งสามารถกำหนดประเภทของข้อมูลด้วยตัวเอง ในกรณีของฉันมันกำหนดว่าXเป็นประเภทลอย ทำไมเราต้องพูดถึงประเภทของข้อมูลเมื่อเราประกาศบางสิ่งใน main ()? ทำไมถึงไม่สามารถคอมไพเลอร์กำหนดชนิดข้อมูลของตัวแปรในตัวของมันเองเช่นเดียวกับในmain()#define

4
การแก้ไขปัญหาการรั่วไหลของหน่วยความจำมีความสำคัญอย่างไร
ฉันพบโดย Valgring ว่าบางโปรแกรม GTK + รั่วหน่วยความจำ การแก้ไขรอยรั่วนั้นสำคัญขนาดไหน? ฉันหมายถึงบ่อยครั้งที่โปรแกรมเหล่านั้นทำงานได้ดีมาก แต่ในทางกลับกันเราไม่สามารถมั่นใจได้ว่าหากต้องการคัดลอกส่วนหนึ่งของรหัสที่รั่วไปยังโปรแกรมอื่น และฉันไม่แน่ใจว่าแนวคิดของ GTK + - โปรแกรมทำงานเร็วหรือไม่ดังนั้นจึงมีการรั่วไหล ดังนั้นหากบางครั้งฉันพบว่าหน่วยความจำรั่วในโปรแกรมโอเพนซอร์ซฉันควรแก้ไขหรือมีปัญหาเรื่องประสิทธิภาพตัวอย่างดังนั้นความคิดดั้งเดิมของโปรแกรมเมอร์คือการเขียนโค้ดรั่วเล็ก ๆ
19 c  memory 

7
การเขียนโปรแกรมแบบแยกส่วนมีผลต่อเวลาคำนวณหรือไม่
ทุกคนบอกว่าฉันควรทำให้โค้ดเป็นโมดูล แต่มันไม่ได้มีประสิทธิภาพน้อยกว่าถ้าฉันใช้วิธีการโทรมากกว่าวิธีที่น้อยกว่า แต่มีขนาดใหญ่กว่า ความแตกต่างใน Java, C หรือ C ++ สำหรับเรื่องนั้นคืออะไร? ฉันเข้าใจว่าการแก้ไขอ่านและทำความเข้าใจได้ง่ายขึ้นโดยเฉพาะในกลุ่ม ดังนั้นการสูญเสียเวลาในการคำนวณจึงไม่มีนัยสำคัญเมื่อเทียบกับประโยชน์ความเป็นระเบียบเรียบร้อยของรหัส?
19 java  c++  c  efficiency 

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