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

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


29
ผู้คนพบอะไรยากเกี่ยวกับพอยน์เตอร์ C? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา จากจำนวนคำถามที่โพสต์ที่นี่เป็นที่แน่ชัดว่าผู้คนมีปัญหาเรื่องงานศพที่น่าสนใจเมื่อได้รับความสนใจจากพอยน์เตอร์และพอยน์เตอร์พอยน์เตอร์ ฉันอยากรู้ว่าทำไม พวกเขาไม่เคยทำให้ฉันมีปัญหาที่สำคัญ (แม้ว่าฉันจะเรียนรู้เกี่ยวกับพวกเขาในยุคหินใหม่) เพื่อที่จะเขียนคำตอบที่ดีกว่าสำหรับคำถามเหล่านี้ฉันต้องการที่จะรู้ว่าสิ่งที่ผู้คนหายาก ดังนั้นหากคุณกำลังดิ้นรนกับพอยน์เตอร์หรือคุณเพิ่งจะทันใดนั้น "เข้าใจ" พอยน์เตอร์ที่ทำให้คุณมีปัญหาคืออะไร
173 c  pointers 



9
ผลกระทบของคำสำคัญภายนอกในฟังก์ชั่น C
ใน C ฉันไม่ได้สังเกตเห็นผลกระทบใด ๆ ของexternคำหลักที่ใช้ก่อนการประกาศฟังก์ชัน ตอนแรกฉันคิดว่าเมื่อกำหนดextern int f();ไฟล์เดียวบังคับให้คุณใช้มันนอกขอบเขตของไฟล์ อย่างไรก็ตามฉันพบว่าทั้งสอง: extern int f(); int f() {return 0;} และ extern int f() {return 0;} รวบรวมได้ดีไม่มีคำเตือนจาก gcc ผมใช้gcc -Wall -ansi; มันจะไม่ยอมรับ//ความคิดเห็นด้วยซ้ำ มีผลกระทบใด ๆ สำหรับการใช้extern ก่อนหน้านิยามฟังก์ชันหรือไม่? หรือเป็นเพียงแค่คีย์เวิร์ดเสริมที่ไม่มีผลข้างเคียงสำหรับฟังก์ชั่น ในกรณีหลังนี้ฉันไม่เข้าใจว่าทำไมนักออกแบบมาตรฐานถึงเลือกที่จะทิ้งไวยากรณ์ด้วยคำหลักที่ไม่จำเป็น แก้ไข:ชี้แจงฉันรู้ว่ามีการใช้งานสำหรับexternตัวแปร แต่ฉันก็แค่ถามเกี่ยวกับexternในฟังก์ชั่น
171 c  syntax  standards 


5
นิพจน์ทั่วไปใน C: ตัวอย่าง
ฉันทำตามตัวอย่างง่ายๆและแนวทางปฏิบัติที่ดีที่สุดของวิธีใช้นิพจน์ทั่วไปใน ANSI C. man regex.hไม่ได้ให้ความช่วยเหลือมากนัก
171 c  regex 

9
ส่งกลับ `struct 'จากฟังก์ชันใน C
วันนี้ฉันสอนเพื่อนสองสามคนถึงวิธีใช้ C structs หนึ่งของพวกเขาถามว่าคุณจะกลับstructจากฟังก์ชั่นเพื่อที่ฉันตอบว่า: "ไม่มีคุณจะกลับตัวชี้ไปยังแบบไดนามิกmallocเอ็ดstructs. แทน" มาจากคนที่ทำ C ++ เป็นหลักฉันคาดหวังว่าจะไม่สามารถคืนstructค่า s ใน C ++ คุณสามารถโอเวอร์โหลดoperator =วัตถุของคุณและทำให้มีฟังก์ชั่นที่จะคืนค่าวัตถุของคุณโดยสมบูรณ์ อย่างไรก็ตามใน C คุณไม่มีทางเลือกนั้นและทำให้ฉันคิดว่าตัวแปลกำลังทำอะไรอยู่ พิจารณาสิ่งต่อไปนี้: struct MyObj{ double x, y; }; struct MyObj foo(){ struct MyObj a; a.x = 10; a.y = 10; return a; } int main () { struct MyObj a; a = …
171 c 

13
ใน C ++ ฉันจะจ่ายเงินสำหรับสิ่งที่ฉันไม่กินหรือไม่
ลองพิจารณาตัวอย่าง hello world ต่อไปนี้ใน C และ C ++: main.c #include <stdio.h> int main() { printf("Hello world\n"); return 0; } main.cpp #include <iostream> int main() { std::cout<<"Hello world"<<std::endl; return 0; } เมื่อฉันรวบรวมใน godbolt เพื่อประกอบขนาดของรหัส C เพียง 9 บรรทัด ( gcc -O3): .LC0: .string "Hello world" main: sub rsp, 8 mov edi, …
170 c++  c 

2
ทำไมฉันถึงได้รับสีลวดลายนี้เมื่อใช้แรนด์ ()
ฉันพยายามสร้างไฟล์รูปภาพเช่นนี้ uint8_t raw_r[pixel_width][pixel_height]; uint8_t raw_g[pixel_width][pixel_height]; uint8_t raw_b[pixel_width][pixel_height]; uint8_t blue(uint32_t x, uint32_t y) { return (rand()%2)? (x+y)%rand() : ((x*y%1024)%rand())%2 ? (x-y)%rand() : rand(); } uint8_t green(uint32_t x, uint32_t y) { return (rand()%2)? (x-y)%rand() : ((x*y%1024)%rand())%2 ? (x+y)%rand() : rand(); } uint8_t red(uint32_t x, uint32_t y) { return (rand()%2)? (y-x)%rand() : ((x*y%1024)%rand())%2 …
170 c  image  random 


15
โมฆะหมายถึงอะไรใน C, C ++ และ C #
การมองหาพื้นฐานที่คำว่า " โมฆะ " มาจากไหนและทำไมจึงเรียกว่าโมฆะ จุดประสงค์ของคำถามคือช่วยคนที่ไม่มีประสบการณ์เกี่ยวกับ C และจู่ๆก็มองไปที่ codebase บนพื้นฐานของ C

2
รหัสนี้สร้างแผนที่ของอินเดียได้อย่างไร
รหัสนี้พิมพ์แผนที่ของอินเดีย มันทำงานยังไง? #include <stdio.h> main() { int a,b,c; int count = 1; for (b=c=10;a="- FIGURE?, UMKC,XYZHello Folks,\ TFy!QJu ROo TNn(ROo)SLq SLq ULo+\ UHs UJq TNn*RPn/QPbEWS_JSWQAIJO^\ NBELPeHBFHT}TnALVlBLOFAkHFOuFETp\ HCStHAUFAgcEAelclcn^r^r\\tZvYxXy\ T|S~Pn SPm SOn TNn ULo0ULo#ULo-W\ Hq!WFs XDt!" [b+++21]; ) for(; a-- > 64 ; ) putchar ( ++c=='Z' ? c = c/ 9:33^b&1); …
169 c  obfuscation 

1
วิธีที่รวดเร็วในการปัด double เป็น 32-bit int อธิบาย
เมื่ออ่านLua ของรหัสที่มาผมสังเกตเห็นว่า Lua ใช้macroในการออกรอบdoubleกับ int32 ฉันดึงข้อมูลmacroและดูเหมือนว่า: union i_cast {double d; int i[2]}; #define double2int(i, d, t) \ {volatile union i_cast u; u.d = (d) + 6755399441055744.0; \ (i) = (t)u.i[ENDIANLOC];} ที่นี่ENDIANLOCถูกกำหนดให้เป็นendianness , 0สำหรับ endian เล็ก ๆ น้อย ๆ1สำหรับ endian ใหญ่ Lua จัดการกับ endianness อย่างระมัดระวัง tย่อมาจากชนิดจำนวนเต็มเช่นหรือintunsigned int ฉันทำวิจัยเล็กน้อยและมีรูปแบบที่ง่ายกว่าmacroซึ่งใช้ความคิดเดียวกัน: #define double2int(i, d) …


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