- หมายถึงความสามารถและลิมิตในการเข้าถึง เข้าใช้ตัวแปรนั้นๆ
- ตัวแปรแต่ละตัวจะมีอายุเรียกว่ lifetime : บอกว่าจะถูกลบทิ้งจากหน่วยความจำเมื่อใด
- External variable หมายถึงตัวแปรที่ประกาศนอกฟังก์ชั่นทั้งหมด เช่นหลังจาก
#include
หรือ#define
- Local variable จะประกาศภายในฟังก์ชั่น
- Automatic variable โปรแกรมจะทำการสร้างเมื่อฟังก์ชั่นถูกเรียก และทำการลบเมื่อฟังก์ชั่นจบการทำงานโดยอัตโนมัต. ดังนั้น การเรียกฟังก์ชั่นแต่ละครั้งก็จะไม่ใช่ค่าเดิม
- Static variable คือตัวแปรที่จะลบออกจากหน่วยความจำก็ต่อเมื่อโปรแกรมทำงานเสร็จสิ้น และก่อนที่โปรแกรมจะปิดตัวลง. ดังนั้น ค่าของ static variable จะอยู่อย่างนั้น
- การประกาศ static variable ใน main() ฟังก์ชั่น ไม่ก่อประโยชน์อะไรขึ้นมาเลย
- Global variable ถ้าประกาศแล้วไม่ได้ตั้งค่า ค่ามาตรฐานจะเป็น 0 (แต่ไม่ควรวางใจตรงนี้)
- Local variable ถ้าประกาศแล้วไม่ได้ตั้งค่า จะเป็นค่าอะไรก็ได้ ไม่มีค่ามาตรฐาน
- extern เป็นคียร์เวิร์ด เป็นตัวบอกว่าตัวแปลที่ประกาศหลังการนี้ ถูกประกาศไว้แล้วที่อื่น และให้ไปใช้ในส่วนของที่นั้น
- static เป็นคียร์เวิร์ด บอกให้โปรแกรมทำการรักษาค่าของมันไว้ แม้ว่าฟังก์ชั่นจะถูกทำลายไปแล้วก็ตาม
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
void keepTrack(); | |
static int track = 34; | |
int main(void) | |
{ | |
setbuf(stdout,NULL); | |
//keepTrack(); | |
int i ; | |
for(i =0 ; i <10;i++) | |
{ | |
keepTrack(); | |
} | |
register num = 34; | |
printf("\n%d",num); | |
return 0; | |
} | |
void keepTrack() | |
{ | |
extern int track; | |
printf("track %d\n",track); | |
track ++; | |
} |