สวัสดีและยินดีต้อนรับกลับ ในการบรรยายนี้ ฉันต้องการพูดคุยเกี่ยวกับสตริงคงที่
เรารู้ว่าตัวอักษรสตริงหรือค่าคงที่สตริงอยู่ภายในเครื่องหมายคำพูดคู่
แต่สิ่งที่เกี่ยวกับตัวแปรนั้นเอง คุณจะแน่ใจได้อย่างไรว่าตัวแปรไม่สามารถเปลี่ยนค่านั้นได้?
นี่เรียกว่าค่าคงที่ ดังนั้นบางครั้งจำเป็นต้องใช้สตริงคงที่ในโปรแกรมของคุณ
โดยที่คุณไม่ต้องการให้ค่าตัวแปรของคุณเปลี่ยนแปลงไป
ตัวอย่างเช่น หากเรากำลังสร้างเส้นรอบวงของการคำนวณ
เราจะทำ 3 เส้นผ่านศูนย์กลาง 14159 เท่า
3. 14159 เป็นค่าคงที่ มันไม่เคยเปลี่ยนแปลง
มันแสดงถึงปี่
คงจะดีมากถ้าแทนที่จะใช้เลขมหัศจรรย์นั้น เราสามารถใช้ตัวแปรและทำให้แน่ใจว่าตัวแปรนั้นจะไม่เปลี่ยนแปลง
ดังนั้นจึงมีเหตุผลที่ดีที่จะใช้ค่าคงที่เชิงสัญลักษณ์แทนการพิมพ์ตัวเลขทุกครั้ง
ก่อนอื่น ชื่อสามารถบอกคุณได้มากกว่าตัวเลข
เป็นหนี้เท่ากับ 0 015 คูณมูลค่าบ้านมีความหมายน้อยกว่าที่ค้างชำระเท่ากับอัตราภาษีคูณมูลค่า
ดังนั้นเราจึงต้องการมีชื่อตัวแปรที่แสดงถึงตัวเลขที่ไม่มีวันเปลี่ยนแปลง
หากคุณอ่านโปรแกรมยาวๆ ความหมายของรุ่นวิสัยทัศน์ที่สองจะชัดเจนขึ้นมาก
ง่ายกว่ามากที่จะดูรหัสนั้นและเข้าใจว่า 0 015 หมายถึงอัตราภาษี
สมมติว่าคุณใช้ค่าคงที่ในหลาย ๆ ที่
และจำเป็นต้องเปลี่ยนค่าของมัน
คุณจะต้องไปเปลี่ยนค่านั้นทุกที่ในโปรแกรม แทนที่จะเปลี่ยนแค่จุดเดียวที่คุณกำหนดค่าคงที่นั้น
ฉันพูดถึงเรื่องนี้ก่อนหน้านี้เมื่อฉันใช้คำว่าตัวเลขวิเศษ
นั่นคือสิ่งที่เรียกว่า
เมื่อใดก็ตามที่คุณเห็นตัวเลขที่ใช้ในโปรแกรม ตัวเลขนั้นไม่ได้ถูกเก็บไว้ในตัวแปร
วิธีที่ดีที่สุดคือสร้างตัวเลขนั้นและใส่ไว้ในค่าคงที่
เพราะถ้าคุณใช้หลายครั้งและตัวแปรนั้นเปลี่ยน สิ่งที่คุณต้องทำคือเปลี่ยนครั้งเดียว
คุณไม่จำเป็นต้องเปลี่ยนทุกที่ที่คุณใช้
ดังนั้นให้หลีกเลี่ยงเลขวิเศษ ใช้ค่าคงที่
วิธีหนึ่งที่คุณสามารถกำหนดค่าคงที่ใน c คือคุณสามารถใช้เพื่อกำหนดคำสั่งตัวประมวลผลล่วงหน้า
ดังนั้นคำสั่งตัวประมวลผลล่วงหน้านี้ให้คุณกำหนดค่าคงที่ได้
และผมก็ใช้มันในโปรแกรมสองสามโปรแกรม ตอนนี้ฉันกำลังพยายามช่วยอธิบาย
ดังนั้น หากคุณต้องการทำอัตราภาษีและเป็นค่าคงที่
คุณสามารถพูดนิยามด้วยเครื่องหมายปอนด์ก่อนหน้านั้นได้
เรารู้ว่ามันเป็นคำสั่งตัวประมวลผลล่วงหน้าเนื่องจากเครื่องหมายปอนด์
จากนั้นเราจะพูดชื่อแล้วตามด้วยค่า
เมื่อโปรแกรมของคุณถูกคอมไพล์แล้ว ค่า 0 015 จะถูกแทนที่ทุกที่ที่คุณใช้อัตราภาษี
เช่นเดียวกับตัวแปร แต่จริงๆ แล้วไม่ใช่ตัวแปร
คุณไม่สามารถกำหนดค่าอื่นใดให้กับสิ่งนั้นได้
หากเป็นตัวแปร คุณจะสามารถกำหนดข้อมูลให้กับตัวแปรได้
แต่ไม่ใช่ในกรณีนี้ เนื่องจากเป็นตัวประมวลผลล่วงหน้า
ดังนั้นคำสั่งของตัวประมวลผลล่วงหน้าจึงบอกว่าคุณไม่สามารถกำหนดข้อมูลได้และคุณระบุสิ่งนั้นด้วยการกำหนด
ดังนั้นให้สังเกตไวยากรณ์สำหรับสิ่งนี้ คุณมีสัญลักษณ์ปอนด์ตามด้วยคีย์เวิร์ดที่กำหนดไว้
และหลังจากนั้น คุณมีชื่อของคุณ
เราไม่ได้ใช้ตัวดำเนินการมอบหมายใดๆ
เรามีแค่ชื่อของเรา ตามด้วยช่องว่าง แล้วก็ค่า
ดังนั้นเพื่อกำหนดค่าให้กับการกำหนดนั้น สิ่งที่คุณต้องมีคือช่องว่าง
ไม่มีอัฒภาคต่อท้าย มันไม่ใช่คำสั่ง มันเฉพาะเจาะจงมาก
สิ่งที่เกิดขึ้นที่นี่คือการทดแทนเวลาคอมไพล์ที่เกิดขึ้นสำหรับตัวประมวลผลล่วงหน้าเหล่านี้
ตัวประมวลผลล่วงหน้าทำงานก่อนที่คอมไพเลอร์จะจำ
ตัวประมวลผลล่วงหน้ากำลังจะทำงาน และจะเห็นการรูทที่กำหนดเหล่านี้ แล้วทุกที่ที่เห็นอัตราภาษี
มันจะใส่เป็น 0 015 สำหรับคอมไพเลอร์
คำสั่งที่กำหนดสามารถปรากฏที่ใดก็ได้ในโปรแกรม
ไม่มีสิ่งที่เรียกว่าการกำหนดท้องถิ่น เมื่อคุณมีคำจำกัดความแล้ว ใครๆ
ก็สามารถใช้มันได้
แนวทางปฏิบัติที่ดีที่สุดหรือแบบแผนมักจะใส่คำสั่งที่กำหนดไว้ที่จุดเริ่มต้นของโปรแกรมหรือภายในไฟล์รวม
หากคุณต้องการแชร์ในไฟล์ต้นฉบับมากกว่าหนึ่งไฟล์
แต่คุณไม่จำเป็นต้องทำเช่นนั้น
เนื่องจากทำงานอยู่ที่ตัวประมวลผลล่วงหน้า
จึงไม่มีขอบเขต ไม่มีโลคัลหรือโกลบอล
คุณสามารถวางไว้ที่ใดก็ได้ และทุกที่ในโปรแกรม คุณสามารถดูได้ แม้ว่าจะมีการใช้งานก่อนที่จะกำหนดก็ตาม
ข้อความที่กำหนดนั้นดีมากเพราะช่วยทำให้โปรแกรมของคุณพกพาได้มากขึ้น
บางครั้งคุณสามารถใช้คำสั่งที่กำหนดและเชื่อมโยงกับคอมพิวเตอร์เครื่องใดเครื่องหนึ่งที่คุณใช้งานอยู่เมื่อโปรแกรมกำลังทำงาน
และจะได้รับค่านั้นมาก
คำสั่งที่กำหนดยังสามารถใช้สำหรับอักขระและค่าคงที่สตริง ไม่ใช่แค่สำหรับตัวเลขเท่านั้น
ถ้าเราต้องการทำอะไรแบบนี้ถูกต้องสมบูรณ์
คุณเพียงแค่ใส่อักขระตัวเดียวไว้ในเครื่องหมายคำพูดเดียว
และถ้าคุณต้องการใส่ตัวอักษรสตริงทั้งตัวจริงๆ คุณก็แค่ใส่เครื่องหมายคำพูดคู่
และนั่นคือสิ่งที่อ๊ะกำลังทำอยู่
อีกวิธีหนึ่งที่คุณสามารถสร้างค่าคงที่และดูเป็นกลไกที่ใหม่กว่า
โดยพื้นฐานแล้ว
C90 ได้เพิ่มวิธีการอื่นที่ให้ตัวปรับค่าคงที่
คุณสามารถใช้คีย์เวิร์ดคงที่เพื่อแปลงการประกาศสำหรับตัวแปรเป็นการประกาศค่าคงที่
และสิ่งนี้จะทำให้คุณไม่สามารถเปลี่ยนตัวแปรนั้นได้ สิ่งที่คุณทำคือคุณพูด const จากนั้นตั้งชื่อประเภทข้อมูลแล้วตามด้วยชื่อของตัวแปร
และสิ่งที่ทำในตัวอย่างนี้จะทำให้เดือนเป็นค่าคงที่เชิงสัญลักษณ์สำหรับ 12
เราไม่ได้เรียกมันว่าตัวแปรเพราะตัวแปรสามารถเปลี่ยนแปลงได้
นั่นคือสาเหตุที่เรียกว่าตัวแปร
คุณมีค่าคงที่หรือตัวแปรและค่าคงที่ในเดือนไม่ใช่ตัวแปรไม่เปลี่ยนแปลง
ค่าคงที่ทำให้เดือนเป็นค่าแบบอ่านอย่างเดียว
คุณสามารถแสดงเดือนและใช้ในการคำนวณได้ คุณไม่สามารถเปลี่ยนค่าของเดือนได้
ดังนั้นค่าคงที่จึงมีความสำคัญหากคุณไม่ต้องการให้ข้อมูลเปลี่ยนแปลง
และยังแทนที่ตัวเลขมหัศจรรย์ได้อีกด้วย
Const เป็นแนวทางที่ใหม่กว่าและมีความยืดหยุ่นมากกว่าการใช้ define
ช่วยให้คุณประกาศประเภท
นอกจากนี้ยังควบคุมได้ดียิ่งขึ้นว่าส่วนใดของโปรแกรมสามารถใช้ค่าคงที่ได้
ดังนั้นคุณควรใช้ค่าคงที่ทุกครั้งที่ทำได้ แต่คุณจะเห็นโปรแกรมจำนวนมากใช้การกำหนดเพราะเป็นกลไกแรก
นอกจากนี้ยังมีวิธีที่สามที่คุณสามารถสร้างค่าคงที่
นั่นคือการใช้ enum จำไว้ว่าเราพูดถึง enums
Enums เป็นวิธีสร้างตัวแปรประเภทของคุณเอง
และมีเฉพาะข้อมูลที่เกี่ยวข้องเท่านั้น คุณไม่สามารถเปลี่ยนค่าของ enums
เมื่อคุณกำหนด enum จะต้องมีค่าเหล่านั้น
มันสามารถมีค่าต่างกันได้ แต่ก็ยังเป็นวิธีสร้างค่าคงที่เชิงสัญลักษณ์
ไม่ใช่วิธีที่สมบูรณ์ แต่เป็นวิธีหนึ่ง
นอกจากนี้ ด้วย const คุณสามารถเริ่มต้นอาร์เรย์อักขระและประกาศเป็นค่าคงที่ ซึ่งเป็นวิธีที่ดีในการจัดการข้อความมาตรฐาน
ดังนั้นหากคุณบอกว่าข้อความ const char เท่ากับวันสิ้นโลกใกล้จะถึงแล้ว ข้อความนั้นจะประกาศเป็นค่าคงที่และได้รับการปกป้องจากการถูกแก้ไขอย่างชัดแจ้งภายในโปรแกรมของคุณ
การพยายามแก้ไขข้อความโดยการทำสำเนา
str จะทำให้เกิดข้อความแสดงข้อผิดพลาดจากคอมไพเลอร์
และตอนนี้คุณสามารถใช้สิ่งนี้สำหรับข้อความมาตรฐานที่อาจแสดงเป็นเอาต์พุตในส่วนต่างๆ
ของโปรแกรม
เทคนิคในการกำหนดข้อความมาตรฐานจะมีประโยชน์อย่างยิ่งหากใช้ในหลายๆ
ที่ดังที่ฉันได้กล่าวไว้
ป้องกันการปรับเปลี่ยนค่าคงที่ดังกล่าวโดยไม่ได้ตั้งใจในส่วนอื่นๆ ของโปรแกรม
เช่นเดียวกับตัวเลขมหัศจรรย์
ดังนั้น ค่าคงที่ที่คุณต้องการใช้ในโปรแกรมของคุณ
มีสองวิธีในการใช้งานโดยพื้นฐานแล้ว ใช้define และการใช้คีย์เวิร์ดคงที่
โปรดให้ความสนใจกับเรื่องนี้
คุณอาจเห็นมันในตัวอย่างที่จะเกิดขึ้น
ขอขอบคุณ.