ตัวแปรคือโครงสร้างเชิงตรรกะที่ไปถึงจุดประสงค์ของอัลกอริทึมในขณะที่ตำแหน่งหน่วยความจำคือโครงสร้างทางกายภาพที่อธิบายการทำงานของคอมพิวเตอร์ โดยทั่วไปแล้วในการเรียกใช้โปรแกรมจะมีการแมป (คอมไพเลอร์ที่สร้าง) ระหว่างความคิดเชิงตรรกะของตัวแปรและที่เก็บข้อมูลของคอมพิวเตอร์
(แม้ในภาษาแอสเซมบลีเรายังมีความคิดเกี่ยวกับตัวแปร (ตรรกะ) ที่จะไปสู่อัลกอริธึมและเจตนาและตำแหน่งทางกายภาพ (ทางกายภาพ) แม้ว่ามันจะมีการรวมแฟลกในการประกอบมากขึ้น)
ตัวแปรคือแนวคิดระดับสูง (เอ้อ) ตัวแปรแสดงถึงค่าที่ไม่รู้จัก (เช่นในคณิตศาสตร์หรือการมอบหมายการเขียนโปรแกรม) หรือตัวยึดตำแหน่งที่สามารถทดแทนด้วยค่า (เช่นเดียวกับในการเขียนโปรแกรม: พารามิเตอร์)
ตำแหน่งหน่วยความจำเป็นแนวคิดระดับต่ำ (เอ้อ) ตำแหน่งหน่วยความจำสามารถใช้ในการจัดเก็บค่าบางครั้งเพื่อเก็บค่าของตัวแปร อย่างไรก็ตามการลงทะเบียน CPU เป็นอีกวิธีหนึ่งในการเก็บค่าของตัวแปรบางตัว การลงทะเบียน CPU ยังเป็นที่เก็บข้อมูลระดับต่ำ (เอ้อ) แต่ไม่ใช่ตำแหน่งหน่วยความจำเนื่องจากไม่มีที่อยู่เพียงชื่อ
ในแง่หนึ่งตัวแปรเป็นกลไกของนามธรรมสำหรับการแสดงเจตนาของโปรแกรมในขณะที่ตำแหน่งหน่วยความจำเป็นหน่วยงานทางกายภาพของสภาพแวดล้อมการประมวลผลที่ให้การจัดเก็บและการดึง
คำถาม 003: จริงหรือไม่ที่ตัวชี้ถูกเก็บไว้ภายในตำแหน่งหน่วยความจำ 0x23452 ทำไม?
เราไม่สามารถพูดได้อย่างแน่นอน เพียงเพราะมีค่าที่จะใช้เป็นที่อยู่ไม่ได้หมายความว่ามันคือที่อยู่มันอาจเป็นจำนวนเต็ม (ทศนิยม) 144466 เราไม่สามารถตั้งสมมติฐานเกี่ยวกับการตีความค่านิยมเพียง แต่ขึ้นอยู่กับว่าพวกเขาปรากฏตัวเลขอย่างไร
คำถาม 004: จริงหรือไม่ที่ตัวชี้ถูกเก็บไว้ภายในตำแหน่งหน่วยความจำ 0x23452 ทำไม?
นี่เป็นคำถามแปลก ๆ พวกเขาคาดหวังว่าสมมติฐานบางอย่างขึ้นอยู่กับกล่องอย่างไรก็ตามโปรดทราบว่าที่อยู่จะเพิ่มขึ้น 1 สำหรับแต่ละกล่อง ในคอมพิวเตอร์สมัยใหม่ทุกเครื่องนั่นหมายความว่าแต่ละกล่องสามารถเก็บแอดเดรสไบต์ได้เป็นบรรทัดฐานมานานหลายทศวรรษแล้ว อย่างไรก็ตามไบต์มีเพียง 8 บิตและสามารถอยู่ในช่วงตั้งแต่ 0 ถึง 255 (สำหรับค่าที่ไม่ได้ลงนาม); แต่พวกเขาแสดงค่าที่มากกว่าที่เก็บไว้ภายในที่อยู่เหล่านี้อย่างใดอย่างหนึ่งที่น่าสงสัยมาก (สิ่งนี้สามารถใช้งานได้หากนี่เป็นเครื่องที่ใช้คำพูด แต่มันไม่ได้บอกอย่างนั้นและวันนี้มีเครื่องไม่กี่เครื่อง
จาก FlashCards ทั้งสี่ที่ฉันแสดงให้คุณเห็นทั้งหมดฉันจะกำหนดพอยน์เตอร์ด้วยวิธีที่แตกต่างกันเล็กน้อย:
ตัวชี้คือตำแหน่งหน่วยความจำที่มีค่าเป็นที่อยู่หน่วยความจำของตำแหน่งหน่วยความจำอื่น
ในขณะที่มีสถานการณ์ที่ความคิดนี้ถูกต้องคุณกำลังผสมคำอุปมาอุปมัยที่นี่ ความคิดของตัวแปรไปที่อัลกอริทึมและความตั้งใจของมัน - ไม่จำเป็นต้องถือว่าตัวแปรทั้งหมดมีตำแหน่งหน่วยความจำ ตัวแปรบางตัว (โดยเฉพาะอาร์เรย์) มีตำแหน่งหน่วยความจำเนื่องจากตำแหน่งหน่วยความจำรองรับการกำหนดแอดเดรส (ในขณะที่การลงทะเบียน CPU สามารถตั้งชื่อไม่ได้ทำดัชนีเท่านั้น)
สำหรับการดำเนินการจะมีการจับคู่แบบตรรกะระหว่างตัวแปร & คำสั่งและตำแหน่งหน่วยความจำของตัวประมวลผลและลำดับการประมวลผลคำสั่ง ตัวแปรที่ค่าไม่เปลี่ยนแปลง (เช่นค่าคงที่) ไม่จำเป็นต้องมีตำแหน่งหน่วยความจำเนื่องจากค่าสามารถทำซ้ำได้ตามต้องการ (เช่นตามที่จำเป็นสำหรับลำดับรหัสที่สร้างโดยคอมไพเลอร์)
a
สิ่งอื่น ๆ ที่อยู่ข้างในนั้นคือค่านิยม นั่นอาจดูเหมือนชัดเจนสำหรับคุณ แต่ฉันไม่สะดวกที่จะตอบคำถามเหล่านั้นอย่างเด็ดขาดโดยไม่เห็นว่ามีการกำหนดเขตข้อมูลเหล่านั้นอย่างไร ไม่มีทางรู้ได้เลยว่าในภาพที่สองเป็นตัวละครสตริง (ถ้ามันแตกต่างกัน) หรือชื่อของตัวแปร หากเป็นสตริงแสดงว่าเป็นสตริงด้วยหรือไม่ หรือค่า "null"?0x23453
nil
a
nil