6
ตัวชี้ C เพื่อประกาศอาร์เรย์ที่มีค่าบิตและผู้ประกอบการ
ฉันต้องการที่จะเข้าใจรหัสต่อไปนี้: //... #define _C 0x20 extern const char *_ctype_; //... __only_inline int iscntrl(int _c) { return (_c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)_c] & _C)); } มันมาจากไฟล์ctype.hจากรหัสที่มาระบบปฏิบัติการ obenbsd ฟังก์ชั่นนี้จะตรวจสอบว่าถ่านเป็นตัวควบคุมหรือตัวอักษรที่พิมพ์ได้ภายในช่วง ascii นี่คือห่วงโซ่ความคิดปัจจุบันของฉัน: iscntrl ('a') ถูกเรียกและ 'a' ถูกแปลงเป็นค่าจำนวนเต็ม ก่อนอื่นตรวจสอบว่า _c เป็น -1 แล้วส่งกลับ 0 อื่น ๆ เพิ่มที่อยู่ของพอยน์เตอร์ที่ไม่ได้กำหนดชี้ไปที่ 1 ประกาศที่อยู่นี้เป็นตัวชี้ไปยังอาร์เรย์ของความยาว …