ประเภทการจัดเก็บ c ++
ประเภทการจัดเก็บกำหนดตัวแปร c ++ โปรแกรม / ช่วงของฟังก์ชั่น (การแสดงผล) และวงจรชีวิต specifiers เหล่านี้วางไว้ก่อนที่จะปรับเปลี่ยนชนิด ด้านล่างมีการจัดเก็บคลาส C ++ โปรแกรมที่มีอยู่:
- รถยนต์
- การลงทะเบียน
- คงที่
- extern
- ไม่แน่นอน
ประเภทการจัดเก็บอัตโนมัติ
ประเภทการจัดเก็บอัตโนมัติเป็นตัวแปรท้องถิ่นประเภทการจัดเก็บค่าเริ่มต้น
{ int mount; auto int month; }
ตัวอย่างข้างต้นกำหนดสองตัวแปรที่มีการจัดเก็บข้อมูลระดับเดียวกันรถยนต์สามารถนำมาใช้เฉพาะภายในฟังก์ชั่นคืออัตโนมัติเพียงปรับเปลี่ยนตัวแปรท้องถิ่น
ลงทะเบียนประเภทการจัดเก็บ
ลงทะเบียนอุปกรณ์เก็บข้อมูลใช้เพื่อกำหนดเก็บไว้ในทะเบียนแทนแรมในตัวแปรท้องถิ่นซึ่งหมายความว่าขนาดสูงสุดของตัวแปรเท่ากับขนาดของการลงทะเบียน (โดยปกติคำ) และไม่สามารถนำไปใช้มันเอก '&' ผู้ประกอบการ (เพราะมันมีที่ตั้งหน่วยความจำไม่ได้)
{ register int miles; }
ต้องการเพียงลงทะเบียนสำหรับการเข้าถึงที่รวดเร็วกับตัวแปรเช่นเคาน์เตอร์ มันก็ควรจะตั้งข้อสังเกตว่าคำนิยามของ 'สมัคร' ไม่ได้หมายความว่าตัวแปรที่จะถูกเก็บไว้ในการลงทะเบียนก็หมายความว่าตัวแปรอาจถูกเก็บไว้ในการลงทะเบียนขึ้นอยู่กับข้อ จำกัด ของฮาร์ดแวร์และการดำเนินการ
อุปกรณ์เก็บข้อมูลแบบคงที่
อุปกรณ์เก็บข้อมูลแบบคงที่สั่งคอมไพเลอร์เพื่อให้การดำรงอยู่ของตัวแปรท้องถิ่นในวงจรชีวิตของโปรแกรมโดยไม่จำเป็นที่จะต้องใส่มันทุกครั้งที่คุณออกไปจากขอบเขตและถูกสร้างขึ้นและถูกทำลายดังนั้นการใช้งานของตัวแปรท้องถิ่นคงสามารถปรับเปลี่ยนเพื่อรักษาค่าของตัวแปรท้องถิ่นระหว่างสายฟังก์ชั่น
ปรับปรุงแบบคงที่สามารถนำไปใช้ตัวแปรทั่วโลก เมื่อมีการปรับเปลี่ยนตัวแปรทั่วโลกคงที่ตัวแปรจะ จำกัด ขอบเขตของคำสั่งในแฟ้มของตน
ใน C ++, เมื่อใช้กับสมาชิกข้อมูลคงที่ระดับวัตถุทั้งหมดจะส่งผลให้ในเวลาเพียงหนึ่งสำเนาของสมาชิกชั้นที่ใช้ร่วมกัน
#include <iostream> // 函数声明 void func(void); static int count = 10; /* 全局变量 */ int main() { while(count--) { func(); } return 0; } // 函数定义 void func( void ) { static int i = 5; // 局部静态变量 i++; std::cout << "变量 i 为 " << i ; std::cout << " , 变量 count 为 " << count << std::endl; }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
变量 i 为 6 , 变量 count 为 9 变量 i 为 7 , 变量 count 为 8 变量 i 为 8 , 变量 count 为 7 变量 i 为 9 , 变量 count 为 6 变量 i 为 10 , 变量 count 为 5 变量 i 为 11 , 变量 count 为 4 变量 i 为 12 , 变量 count 为 3 变量 i 为 13 , 变量 count 为 2 变量 i 为 14 , 变量 count 为 1 变量 i 为 15 , 变量 count 为 0
ประเภทการจัดเก็บ extern
ประเภทการจัดเก็บextern จะใช้เพื่อให้มีการอ้างอิงถึงตัวแปรทั่วโลกตัวแปรระดับโลกสำหรับทุกไฟล์โปรแกรมจะมองเห็นได้เมื่อคุณใช้ 'extern' ที่ไม่สามารถเริ่มต้นตัวแปรชื่อตัวแปรจะชี้ไปยังสถานที่จัดเก็บข้อมูลที่กำหนดไว้ก่อนหน้า
เมื่อคุณมีเอกสารหลายและกำหนดตัวแปรทั่วโลกหรือฟังก์ชั่นที่สามารถใช้ในเอกสารอื่น ๆ ที่คุณสามารถใช้externในไฟล์อื่น ๆ ที่จะได้รับตัวแปรหรือฟังก์ชั่นที่กำหนดไว้อ้างอิงมันสามารถเข้าใจextern จะใช้ในการประกาศตัวแปรส่วนกลางหรือฟังก์ชั่นในแฟ้มอื่น
ปรับปรุง extern มักจะใช้เมื่อมีสองไฟล์หรือมากกว่าส่วนตัวแปรทั่วโลกเดียวกันหรือฟังก์ชั่นของเวลาดังต่อไปนี้:
ไฟล์แรก: main.cpp
#include <iostream> int count ; extern void write_extern(); int main() { count = 5; write_extern(); }
แฟ้มสอง: support.cpp
#include <iostream> extern int count; void write_extern(void) { std::cout << "Count is " << count << std::endl; }
นี่คือคำสำคัญไฟล์externที่สองจะใช้ในการประกาศนับเป็นครั้งแรกที่ได้รับการกำหนดไว้ใน main.cpp แฟ้มใน ตอนนี้รวบรวมไฟล์ทั้งสองดังนี้
$ g++ main.cpp support.cpp -o write
นี้สร้างเขียนโปรแกรมปฏิบัติการความพยายามที่จะดำเนินการเขียนก็จะก่อให้เกิดผลต่อไปนี้:
$ ./write Count is 5
ประเภทการจัดเก็บที่ไม่แน่นอน
ระบุไม่แน่นอนที่ใช้เฉพาะกับวัตถุชั้นเรียนซึ่งจะอยู่ในตอนท้ายของการกวดวิชานี้จะอธิบายมันจะช่วยให้สมาชิกของค่าคงที่วัตถุแทน นั่นคือสมาชิกที่ไม่แน่นอนสามารถแก้ไขได้โดยฟังก์ชั่นสมาชิก const