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