PDA

View Full Version : سوال: نحوه مقدار دهی به محتوای یک اشاره گر از نوع LPDWORD



feri88
شنبه 09 خرداد 1388, 11:51 صبح
سلام
من یه فایل dll دارم که توی یکی از توابعش یه متغیر ازنوع LPDWORD دارم،به این صورت:

LPDWORD pcbDataLen
ولی وقتی می خوام به محتواش مقدار بدم، ارور می ده که عملگر ستاره قابل قبول نیست:

*pcbDataLen = 0;
اینم ارور:

error C2297: '*' : illegal, right operand has type 'LPDWORD'
به نظرتون چی کار باید بکنم؟
حتماً باید بهش مقدار بدم، جور دیگه ای میشه به محتواش مقدار داد؟
مرسی

Nima_NF
شنبه 09 خرداد 1388, 15:43 عصر
با توجه به اینکه چند مرتبه چنین اشتباهاتی در اشاره گر ها کرده اید، فکر می کنم شما باید کمی بیشتر بر روی اشاره گر ها کار کنید تا با قوانین و نحوه درست استفاده از آن ها کاملا آشنا شوید.

وقتی شما می نویسید LPDWORD یعنی همان *unsigened long که اشاره گری هست که آدرس در خود نگه می دارد. تا زمانی که به اظاره گری حافظه تخصیص ندهید یا آدرسی در آن قرار ندهید دسترسی به آن ممکن نیست.
پس وقتی می نویسید pcbDataLe* یعنی محتویات جایی که آدرسش هنوز مشخص نیست.

برای نگه داری تنها یک خانه حافظه، از LPDWORD استفاده نکنید، بلکه راحت از DWORD استفاده کنید و هر جا در تابعی خواستید از ان استفاده کنید راحت با & آن را ارسال کنید.