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

C เป็นภาษาโปรแกรมทั่วไปที่ใช้สำหรับการเขียนโปรแกรมระบบ (ระบบปฏิบัติการและฝังตัว), ห้องสมุด, เกมและข้ามแพลตฟอร์ม แท็กนี้ควรใช้กับคำถามทั่วไปที่เกี่ยวข้องกับภาษา C ตามที่กำหนดไว้ในมาตรฐาน ISO 9899 (เวอร์ชันล่าสุด 9899: 2018 เว้นแต่ระบุไว้เป็นอย่างอื่น - นอกจากนี้ยังติดแท็กคำขอเฉพาะรุ่นด้วย c89, c99, c11 ฯลฯ ) C แตกต่างจาก C ++ และไม่ควรใช้ร่วมกับแท็ก C ++ หากไม่มีเหตุผล

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 


15
เวลาดำเนินการของโปรแกรม C
ฉันมีโปรแกรม C ที่มีวัตถุประสงค์เพื่อให้ทำงานแบบขนานกับโปรเซสเซอร์หลายตัว ฉันต้องสามารถบันทึกเวลาดำเนินการ (ซึ่งอาจเป็นที่ใดก็ได้จาก 1 วินาทีถึงหลายนาที) ฉันค้นหาคำตอบแล้ว แต่พวกเขาดูเหมือนจะแนะนำให้ใช้clock()ฟังก์ชันซึ่งเกี่ยวข้องกับการคำนวณจำนวนนาฬิกาที่โปรแกรมใช้หารด้วยClocks_per_secondค่า ฉันไม่แน่ใจว่าClocks_per_secondคำนวณค่าได้อย่างไร? ใน Java ฉันใช้เวลาปัจจุบันเป็นมิลลิวินาทีก่อนและหลังการทำงาน มีสิ่งที่คล้ายกันใน C? ฉันดูแล้ว แต่ฉันไม่สามารถหาวิธีที่จะได้อะไรที่ดีไปกว่าความละเอียดที่สอง ฉันยังรู้ว่า profiler จะเป็นตัวเลือก แต่ฉันต้องการใช้ตัวจับเวลา ขอบคุณ
209 c  benchmarking 

30
เหตุใด C จึงเร็วและทำไมภาษาอื่นไม่เร็วหรือเร็วกว่า [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 เดือนที่ผ่านมา ปรับปรุงคำถามนี้ ในการฟังพอดคาสต์ StackOverflow การกระทุ้งทำให้เกิดขึ้นว่า "โปรแกรมเมอร์จริง" เขียนใน C และ C เร็วขึ้นเพราะมัน "ใกล้กับเครื่อง" ออกจากการยืนยันเดิมสำหรับโพสต์อื่นอะไรเป็นพิเศษเกี่ยวกับ C ที่ช่วยให้มันเร็วกว่าภาษาอื่น ๆ ? หรือใช้วิธีอื่น: อะไรจะหยุดภาษาอื่นไม่ให้สามารถคอมไพล์ลงไปสู่ไบนารี่ที่ทำงานได้เร็วเท่ากับ C?
208 c  performance 


8
ถูกต้อง แต่ไม่มีค่าไวยากรณ์ในตัวพิมพ์สลับหรือไม่
จากการพิมพ์ผิดเล็กน้อยฉันพบโครงสร้างนี้โดยบังเอิญ: int main(void) { char foo = 'c'; switch(foo) { printf("Cant Touch This\n"); // This line is Unreachable case 'a': printf("A\n"); break; case 'b': printf("B\n"); break; case 'c': printf("C\n"); break; case 'd': printf("D\n"); break; } return 0; } ดูเหมือนว่าprintfที่ด้านบนของswitchคำสั่งนั้นถูกต้อง แต่ก็ไม่สามารถเข้าถึงได้อย่างสมบูรณ์ ฉันได้คอมไพล์สะอาดโดยไม่มีแม้แต่คำเตือนเกี่ยวกับรหัสที่ไม่สามารถเข้าถึงได้ แต่สิ่งนี้ดูเหมือนไม่มีจุดหมาย คอมไพเลอร์ควรตั้งค่าสถานะนี้ว่าเป็นรหัสที่ไม่สามารถเข้าถึงได้หรือไม่ สิ่งนี้มีจุดประสงค์หรือไม่?

25
ตัวชี้ C คืออะไรถ้าไม่ใช่ที่อยู่หน่วยความจำ
ในแหล่งข้อมูลที่น่าเชื่อถือเกี่ยวกับ C ข้อมูลต่อไปนี้จะได้รับหลังจากพูดคุยกับ&ผู้ดำเนินการ: ... มันค่อนข้างโชคร้ายที่คำศัพท์[ที่อยู่ของ]ยังคงอยู่เพราะมันทำให้คนที่ไม่รู้ว่ากำลังพูดถึงเรื่องอะไรอยู่และทำให้คนที่หลงทางเข้าใจผิด: การคิดถึงพอยน์เตอร์ราวกับว่าพวกเขามักจะนำไปสู่ความเศร้าโศก ... . วัสดุอื่น ๆ ที่ฉันได้อ่าน (จากแหล่งข้อมูลที่น่าเชื่อถือเท่า ๆ กันฉันจะบอกว่า) ได้เรียกตัวชี้และตัว&ดำเนินการให้ที่อยู่หน่วยความจำอย่างไม่สะทกสะท้านเสมอ ฉันชอบที่จะค้นหาความเป็นจริงของเรื่องนี้ต่อไป แต่มันก็เป็นเรื่องยากเมื่อแหล่งข้อมูลที่มีชื่อเสียงไม่เห็นด้วย ตอนนี้ผมกำลังสับสนเล็กน้อย - สิ่งที่ว่าเป็นตัวชี้แล้วหากไม่ได้อยู่หน่วยความจำ? PS ผู้เขียนกล่าวในภายหลังว่า: ... ฉันจะใช้คำว่า 'ที่อยู่' ต่อไปเนื่องจากการคิดค้นคำ [คำศัพท์] ที่ต่างออกไปจะยิ่งแย่กว่าเดิม

10
ฉันจะดูไฟล์ต้นฉบับ C / C ++ ได้อย่างไรหลังจากประมวลผลล่วงหน้าใน Visual Studio
สมมติว่าฉันมีไฟล์ต้นฉบับที่มีคำสั่ง preprocessor มากมาย เป็นไปได้หรือไม่ที่จะดูว่ามันดูแลตัวประมวลผลล่วงหน้าด้วยหรือไม่

7
ความแตกต่างระหว่าง AF_INET และ PF_INET ในการเขียนโปรแกรมซ็อกเก็ตคืออะไร?
ความแตกต่างระหว่าง AF_INET และ PF_INET ในการเขียนโปรแกรมซ็อกเก็ตคืออะไร? ฉันสับสนระหว่างการใช้ AF_INET และ PF_INET ในและsocket()bind() นอกจากนี้วิธีการให้ที่อยู่ IP ในsin_addrสาขา?
205 c  linux  sockets 

17
ผ่านโดยอ้างอิงในค
ถ้า C ไม่สนับสนุนการส่งตัวแปรโดยการอ้างอิงทำไมถึงใช้งานได้? #include <stdio.h> void f(int *j) { (*j)++; } int main() { int i = 20; int *p = &i; f(p); printf("i = %d\n", i); return 0; } เอาท์พุท: $ gcc -std=c99 test.c $ a.exe i = 21



25
เคยมีข้อได้เปรียบในการใช้ 'goto' ในภาษาที่สนับสนุนลูปและฟังก์ชั่นหรือไม่? ถ้าเป็นเช่นนั้นทำไม
ฉันอยู่ภายใต้การแสดงผลที่gotoไม่ควรใช้ถ้าเป็นไปได้ ในขณะที่อ่าน libavcodec (ซึ่งเขียนเป็นภาษา C) เมื่อวันก่อนฉันสังเกตเห็นการใช้งานหลายอย่าง มันเคยเป็นประโยชน์ที่จะใช้gotoในภาษาที่รองรับลูปและฟังก์ชั่นหรือไม่? ถ้าเป็นเช่นนั้นทำไม


7
ความแตกต่างระหว่าง read () และ recv () และระหว่าง send () และ write () คืออะไร
อะไรคือความแตกต่างระหว่างread()และและrecv()และระหว่างsend()และwrite()ในการเขียนโปรแกรมซ็อกเก็ตในแง่ของการแสดงความเร็วและพฤติกรรมอื่น ๆ ?

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