مشاهده نسخه کامل
: تفاوت در سه نوع آدرس دهی
دروود
تفاوت آدرس دهی مطلق Absolute addressing با آدرس دهی مجازی Virtual Addressing با Relative Addressing چی هست؟
آیا این نوع ادرس دهی در .Net با Html تفاوت دارد؟
H.E.R.O.E.S
20-07-2014, 12:46
منظورتون از این نوع آدرس دهی همچین ادرسی هست یا اشتباه منظورتون و برداشت کردم:
مثلا داریم:
Function sum(
x,y) as integer
x=x+y
return x
end function
---
در این جا 2 حالت اتفاق افتاده
جمع ایکس با ایگرگ در ایکس ریخته می شه
این تابع از نظر من فاقد مشکل هستش
حالا بریم سراغ آدرس دهی و نحوه فراخوانی تابع:
ادرس دهی مطلق:
sum(5,6)
خروجی این تابع عدد 11 هست
آدرس دهی نسبی:
a=5
b=6
sum(a,b)
خروجی این هم عدد 11 هست
پس تفات این ها در چیست؟
در ظاهر اگر نگاه کنی می بینی که هیچ تفاوتی با هم ندارن ولی در پشت پرده داره یک سری اتفاق هایی می افته
در ادرس دهی نسبی گفتیم
sum(a,b)
برنامه ویژوال استودیو این رو اینجوری برداشت می کنه
a=a+b
یعنی مقدار متغیر a تغییر کرد
ولی در نسبی مقدار عوض نمی شه
نکته:
در ادرس دهی نسبی آدرس خود متغیر به تابع ارسال می شود و تابع ادرس متغیر را دارد و می تواند در آن تغییرات ایجاد کند
نکته:
در ادرس دهی مطلق ، کپی ای از مقدار متغیر به تابع ارسال می شود و تابع فاقد ادرس متغیر است و نمی تواند در آن تغیرات ایجاد کند
---
بزار مثالی واضح تر بزنم
این کار آدرس دهی نسبی و مطلق مثل امانت می مونه
مثلا یک کتاب به دوستت قرض می دی 2 اتفاق می افته
اگر از لحاظ ادرس دهی نسبی بخوای بهش نگاه کنی:
کتاب رو با یک سری تغیرات تحویلت می ده یعنی ممکنه کتاب و سوخته تحویلت بده
اگر از لحاظ ادرس دهی مطلق نگاه کنی:
کتاب و سالم تحویلت می ده
---
مثالی دیگر:
مثلا شما دارید برنامه ای می نویسید که به آدرس ویندوز نیاز دارید و نمی دانید که کاربر ویندوزش رو در کدوم دایرکتوری ریخته
درایو سی یا دی یا ایی ریخته
هیچی نمی دونید
اگر از ادرس دهی مطلق استفاده کنی ممکنه برنامه تولید خطا کنه
اما اگر از این عبارت استفاده کنی:
%windir%
احتمال ایجاد خطا کاهش پیدا می کنه
---
این عبارت و در نوار آدرس مای کامپیوتر تایپ کن تا بهتر منظورم و متوجه بشی
%windir%
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.