امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
اشاره گر (تورو خدا كمك كنيد)
نویسنده پیام
sh_teta آفلاین
كاربر دو ستاره
**

ارسال‌ها: 113
موضوع‌ها: 38
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 0
( 3 تشکر در 1 ارسال )
ارسال: #1
اشاره گر (تورو خدا كمك كنيد)
ميشه بگيد & و * در اشاره گر دقيقا چكار مي كنن
جواب سوال قبليمو كسي بلد نيست؟
۲۶-شهریور-۱۳۸۵, ۱۷:۲۷:۳۱
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #2
RE: اشاره گر (تورو خدا كمك كنيد)
دوست من سلام

ببین در رابطه با اشاره گر ها دوتا مطلب هست که باید بدونی :
1
-آدرسی که یک اشاره گر به اون اشاره می کنه مثلا آدرس یک متغیر دیگه
2-محتویات اون چیزی که یک اشاره گر بهش اشاره می کنه ( دسترسی غیر مستقیم ) !

مثال : یک اشاره گر به اسم a و از نوع integer در نظر بگیر . خوب در حال حاضر اشاره گر شما به یک جای نامعلوم ( آدرس نامعلوم ) در حافظه اشاره می کنه و محتویات حافظه ای که بهش اشاره می کنه نا معلوم هست !

خوب حالا میایم و متغیر با نام k در نظر بگیر و مقدار 2 رو مثلا توش بذار ! حالا دوست داریم که اشاره گر اولمون a به متغیر k اشاره کنه ! خوب راهش اینه که آدرس متغیر k رو توی a بریزیم . با کمک & (عملگر آدرس ) آدرس k رو توی a میریزم : a=&k
در این حالت a به آدرس k اشاره می کنه ! حالا سوال اینه که محتویاتی که a بهش اشاره می کنه چیه ؟ خب دیقا همون محتویات متغیر k هست . برای دسترسی به مقدار متغیر k از طریق اشاره گر a باید از عملگر * استفاده کنیم . مثلا میخوایم مقدارش رو چاپ کنیم ، می نویسیم : (printf("%d",*a
این خط کد دقیقا برابر (printf("%d",k هست .

در واقع با کمک اشاره گر ها می تونیم بصورت غیر مستقیم به متغیر ها در حافظه دسترسی داشته باشیم !




گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۲۶-شهریور-۱۳۸۵, ۱۸:۱۵:۰۴
ارسال‌ها
پاسخ
sh_teta آفلاین
كاربر دو ستاره
**

ارسال‌ها: 113
موضوع‌ها: 38
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 0
( 3 تشکر در 1 ارسال )
ارسال: #3
RE: اشاره گر (تورو خدا كمك كنيد)
خيلي ممنونم
۲۶-شهریور-۱۳۸۵, ۲۰:۴۹:۳۲
ارسال‌ها
پاسخ
sh_teta آفلاین
كاربر دو ستاره
**

ارسال‌ها: 113
موضوع‌ها: 38
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 0
( 3 تشکر در 1 ارسال )
ارسال: #4
RE: اشاره گر (تورو خدا كمك كنيد)
من يه كد نوشتم.اينه:
;int *p,s
;s = 5
p = &s;
printf("%d",p);
و نتيجه گرفتم:32-
ايا ادرس s مساوي 32- است؟
(آخرین ویرایش در این ارسال: ۲۶-شهریور-۱۳۸۵, ۲۳:۳۳:۰۰، توسط sh_teta.)
۲۶-شهریور-۱۳۸۵, ۲۱:۰۵:۲۱
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #5
RE: اشاره گر (تورو خدا كمك كنيد)
دوست عزیز ، من توی همون تاپیک که مطرح کرده بودی جوابش رو داده بودم :

http://forum.iranvig.com/showthread.php?tid=4633

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۲۶-شهریور-۱۳۸۵, ۲۱:۵۶:۵۷
ارسال‌ها
پاسخ
sh_teta آفلاین
كاربر دو ستاره
**

ارسال‌ها: 113
موضوع‌ها: 38
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 0
( 3 تشکر در 1 ارسال )
ارسال: #6
RE: اشاره گر (تورو خدا كمك كنيد)
نه
۲۶-شهریور-۱۳۸۵, ۲۳:۲۹:۲۸
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #7
RE:  اشاره گر (تورو خدا كمك كنيد)
sh_teta نوشته است:نه

Amaze Amaze Amaze

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۲۷-شهریور-۱۳۸۵, ۰۰:۵۳:۰۲
ارسال‌ها
پاسخ
sh_teta آفلاین
كاربر دو ستاره
**

ارسال‌ها: 113
موضوع‌ها: 38
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 0
( 3 تشکر در 1 ارسال )
ارسال: #8
RE: اشاره گر (تورو خدا كمك كنيد)
من منظورم اين نيست كه چرا اين عدد منفي هست مي خوام بدونم ايا واقعا ادرس اين متغير 32- است حالا شما ميشه لطف كنيد جواب اينو بديد.

من يه كد نوشتم.اينه:
;int *p,s
;s = 5
p = &s;
printf("%d",p);
و نتيجه گرفتم:32-
ايا ادرس s مساوي 32- است؟
(آخرین ویرایش در این ارسال: ۲۷-شهریور-۱۳۸۵, ۱۴:۰۴:۴۵، توسط sh_teta.)
۲۷-شهریور-۱۳۸۵, ۱۴:۰۰:۲۴
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #9
RE: اشاره گر (تورو خدا كمك كنيد)
نقل قول: مي خوام بدونم ايا واقعا ادرس اين متغير 32- است

مطمعنا نه ! آدرس عددی است مثبت و صحیح . علت منفی شدنش رو که برات توضیح دادم . برای تصحیح کدت باید بجای d% توی تابع printf ، مقدار u% قرار بدی تا کامپایلر آدرس درست رو برات چاپ کنه . در واقع d% به کامپایلر میگه که عددی صحیح و علامتدار رو چاپ کنه ( که با توجه به توضیحاتی که درباره بیت علامت داده بودم برات ) ممکنه عددت منفی بشه و آدرس درست چاپ نشه . وقتی u% بکار ببری به کامپایلر میگی که بیت علامت بی بیت علامت ( یعنی با عدد من مثل یک عدد بدون علامت یا Unsigned برخورد کن )  پس عددی مثبت ( آدرس ) واست چاپ میشه !
بری فهم بیشتر کدهای زیر رو تست کن تا بهتر مطلب رو بگیری :

وقتی d% بکار ببری :

کد:
#include <stdio.h>
int main()
{
int *a;
a = (int *)0xFFFFFFFFF;

printf("%d",a);

}

وقتی u% بکار ببری :

کد:
#include <stdio.h>
int main()
{
int *a;
a = (int *)0xFFFFFFFFF;

printf("%u",a);

}

Cool

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
(آخرین ویرایش در این ارسال: ۲۷-شهریور-۱۳۸۵, ۱۵:۲۳:۲۰، توسط Mamad2003.)
۲۷-شهریور-۱۳۸۵, ۱۵:۲۲:۵۳
ارسال‌ها
پاسخ
تشکر شده توسط : فاطمه وطن دوست
sh_teta آفلاین
كاربر دو ستاره
**

ارسال‌ها: 113
موضوع‌ها: 38
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 0
( 3 تشکر در 1 ارسال )
ارسال: #10
RE: اشاره گر (تورو خدا كمك كنيد)
اخه من نمي فهمم وقتي ميگي dl% يه چيز چاپ مي كنه وقتي ميگي u% يه چيز ديگه .بالاخره بايد به كدوم اعتماد كرد
۲۷-شهریور-۱۳۸۵, ۲۰:۱۴:۰۳
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #11
RE: اشاره گر (تورو خدا كمك كنيد)
ConfusedConfusedConfused الان مشکل شما کجاست ؟؟ من که همه اش رو توضیح دادم ، علتش هاش رو هم گفتم . واسه کار شما هم راه حل ارائه کردم . کدت هم تصحیح شد . Sad
میتونم یک سوال بپرسم ؟! اونم اینکه آیا شما میدونی چرا ما اصلا اعداد signed و unsigned داریم یا اینکه چرا کامپایلر به ما این امکانات رو داده ؟

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۲۷-شهریور-۱۳۸۵, ۲۰:۳۶:۲۵
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  اشاره گر sh_teta 1 1,990 ۲۶-شهریور-۱۳۸۵, ۱۸:۲۱:۵۰
آخرین ارسال: Mamad2003
  لطفا اصلاح كنيد Iron_Fist 2 2,289 ۰۴-بهمن-۱۳۸۴, ۱۷:۳۵:۱۹
آخرین ارسال: Iron_Fist

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 3 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS