ไปที่เนื้อหา


รูปภาพ

สงสัยเกี่ยวกับตัวแปรคับ


  • กรุณาลงชื่อเข้าใช้เพื่อตอบกระทู้
มี 3 โพสต์ตอบกลับกระทู้นี้

#1 SezunA

SezunA

    เฝิงจี้

  • Special Member
  • 100 โพสต์

โพสต์เมื่อ 29 January 2008 - 11:26:46 PM

คือเห็นว่าการเขียนโปรแกรมจะมีการกำหนดว่าตัวแปรนี้เก็บข้อมูลชนิดไหนแล้วเก็บเป็นจำนวนกี่ไบต์

เช่น ถ้าตัวแปร boolean ก็ค่า true false จำนวน2ไบต์ นี่หมายความว่าจะใช้แรมจำนวน2ไบต์ในการเก็บหลอคับ

แล้วจะมีการคืนทรัพยากรณ์ยังไงคับ จนกว่าเราจะเลิกใช้ตัวแปรนั้นในการเก็บค่าหลอคับ

ถ้าเป็นอย่างที่ถามไว้ข้างบนดังนั้นจะประหยัดทรัพยากรหรือเปลืองทรัพยากรก็ขึ้นอยู่กับตรงนี้ด้วยใช่มั้ยคับ

ปล.เข้าบอร์ดไม่ได้หลายวันเลยแฮ๊ะใครเป็นมั่งหว่า-*-

#2 X CroSs

X CroSs

    Truebot Co-Developer

  • Root Administrator
  • 102427 โพสต์
  • Gender:Male

โพสต์เมื่อ 30 January 2008 - 12:10:29 AM

host เน่าครับ เรื่องการประกาศตัวแปรมีผลต่อการเปลือง memory แน่นอน
เช่น longint (8byte) ย่อมใช้มากกว่า integer (4byte) ลองคิดถึงโปรแกรมที่ใช้ array
100000+ ดูสิ แค่เปลี่ยน type ram ก้อหายไปเกือบครึ่ง mb แล้วนะนั่น

ส่วนเวลาการคงอยู่ของตัวแปร จะเรียกว่า ช่วงชีวิต (life time) ครับ อันนี้แล้วแต่ภาษา
ว่าจะจัดการยังไง โดยมาก จะสิ้นสุดเมื่อจบ block นั้นๆ เช่น จบ { } หรือ จบ function
ลองหาอ่านเรื่อง life time ของ java อ่ะคับ น่าจะเข้าใจมากขึ้น

ts.gif

manutd18wm.png


#3 Solars

Solars

    Exclusive Member

  • Exclusive Programmer
  • 10037 โพสต์

โพสต์เมื่อ 30 January 2008 - 06:33:20 AM

ตัวแปรมีอยู่ 2 อย่างครับคือ
1 Local คือ ตัวแปรที่ประกาศใช้ใน procedure หรือ function ต่างๆ จะมีการคืนหน่วยความจำก็ต่อเมื่อ จบการทำงานของ procedure หรือ function นั้นๆ หรือจะมีการกำหนดเองว่าให้คืนตอนไหน
2 Global คือ ตัวแปรที่ประกาศใช้ในส่วนจอง โปรแกรมหลัก หรือ main โปรแกรม จะมีการใช้งานจนกว่าจะจบโปรแกรม หรือ กำหนดให้หยุดโดยมากแล้วจะหยุดเมื่อจบการทำงานของโปรแกรมครับ

#4 SezunA

SezunA

    เฝิงจี้

  • Special Member
  • 100 โพสต์

โพสต์เมื่อ 30 January 2008 - 10:48:04 PM

ขอบคุณคับกระจ่างขึ้นเยอะเลย.. ปกติแล้วชอบเลือกใช้ตัวแปรที่เก็บค่าได้เยอะๆไว้ก่อน(เผื่ออนาคต)
แต่ถ้ามามองถึงเรื่องหน่วยความจำแล้วบางครั้งคงเกินความจำเป็นไปจริงๆ




0 สมาชิกกำลังอ่านกระทู้นี้

0 สมาชิก, 0 ผู้เยี่ยมชม, 0 ผู้ใช้งานที่ซ่อนตัว