امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
متغير static
نویسنده پیام
adameh_bahal آفلاین
كاربر تک ستاره
*

ارسال‌ها: 59
موضوع‌ها: 14
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 35
( 8 تشکر در 6 ارسال )
ارسال: #1
متغير static
ميخواستم بدونم متغير static چطوری تغيير ميکنه؟
تو اين 2 تا مثال هم توضيح بديد که چجوری s,y تغيير ميکنن ممنون ميشم

کد:
main()
{
int m;
int n;
f(2,4);
f(3,5);
}

f(int a,int b)
{
static int s=0;
int x;
int y;
x=0;
x++;
s++;
}

کد:
main()
{
f();
}

f()
{
int x=0;
static int y=0;
x++;
y++;
}
۲۷-خرداد-۱۳۸۸, ۱۷:۳۳:۱۴
ارسال‌ها
پاسخ
mahdi20 آفلاین
کاربر با تجربه
****

ارسال‌ها: 518
موضوع‌ها: 35
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 5261
( 1763 تشکر در 452 ارسال )
ارسال: #2
RE: متغير static
نقل قول: ميخواستم بدونم متغير static چطوری تغيير ميکنه؟

اول از همه که باید بگم دو نوع تغیر استاتیک داریم: محلی و عمومی

محلی:
1: فقط داخل همون تابعی که تعریف میشن قابل استفاده هستند
2: وقتی تابع را فراخوانی میکنی ایجاد میشن و وقتی از تابع خارج شدی، اخرین مقدار خودش را حفظ میکنه
3: فقط و فقط یک بار مقدار اولیه میگیره.

عمومی:
1:در خارج از توابع تعریف میشن ودر توابعی ه بعد از اونا تعریف میشن قابلیت استفاده دارن
2: بعد از هر بار استفاده ازش،اخرین مقدار خودش را حفظ میکنه
3: فقط و فقط یک بار مقدار اولیه میگیره.

نقل قول: تو اين 2 تا مثال هم توضيح بديد که چجوری s,y تغيير ميکنن ممنون ميشم

با این تعاریفی که برات گفتم به راحتی خودت میتونی بفهمی که چه جوری تغییر میکنن.

[تصویر:  iran2.png]
۲۷-خرداد-۱۳۸۸, ۱۸:۲۴:۵۱
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : adameh_bahal
adameh_bahal آفلاین
كاربر تک ستاره
*

ارسال‌ها: 59
موضوع‌ها: 14
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 35
( 8 تشکر در 6 ارسال )
ارسال: #3
RE: متغير static
(۲۷-خرداد-۱۳۸۸, ۱۸:۲۴:۵۱)mahdi20 نوشته است:
نقل قول: ميخواستم بدونم متغير static چطوری تغيير ميکنه؟

اول از همه که باید بگم دو نوع تغیر استاتیک داریم: محلی و عمومی

محلی:
1: فقط داخل همون تابعی که تعریف میشن قابل استفاده هستند
2: وقتی تابع را فراخوانی میکنی ایجاد میشن و وقتی از تابع خارج شدی، اخرین مقدار خودش را حفظ میکنه
3: فقط و فقط یک بار مقدار اولیه میگیره.

عمومی:
1:در خارج از توابع تعریف میشن ودر توابعی ه بعد از اونا تعریف میشن قابلیت استفاده دارن
2: بعد از هر بار استفاده ازش،اخرین مقدار خودش را حفظ میکنه
3: فقط و فقط یک بار مقدار اولیه میگیره.

نقل قول: تو اين 2 تا مثال هم توضيح بديد که چجوری s,y تغيير ميکنن ممنون ميشم

با این تعاریفی که برات گفتم به راحتی خودت میتونی بفهمی که چه جوری تغییر میکنن.


يعنی تو اين 2 تا مثال s,y هر 2 همون مقدار صفر ميمونن و تغيير نميکنن ولی بقيه متقيرها يکی يکی اضافه ميشن؟
۲۷-خرداد-۱۳۸۸, ۱۸:۵۹:۰۳
ارسال‌ها
پاسخ
mahdi20 آفلاین
کاربر با تجربه
****

ارسال‌ها: 518
موضوع‌ها: 35
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 5261
( 1763 تشکر در 452 ارسال )
ارسال: #4
RE: متغير static
نقل قول: يعنی تو اين 2 تا مثال s,y هر 2 همون مقدار صفر ميمونن و تغيير نميکنن ولی بقيه متقيرها يکی يکی اضافه ميشن؟

ببین تو اولی موقعی که برای بار اول تابع اف با ورودی های 2و4 فراخونی میشه ، در اول کار s=0. بعد در ادامه اجرای تابع یکی بهش اضافه میشه. خوب تا الن s=1 .حالا از تابع میاد بیرون و به برنامه ی main برمیگرده. دوباره تابع اف با ورودی های 3و5 فراخونی میشه. در اینجا میخواد مقداره اس را برابر 0 بزاره، ولی همین طور که گفتم متغير static فقط و فقط یک بار مقدار اولیه میگیره و اخرین مقدار خودش را حفظ میکنه پس 0 در اس ذخیره نمیشه و همون مقدار 1 که داشت باقی میمونه و همچنان در ادامه ی تابع یکی بهش اضافه میشه. پس در نهایت s=2

در مورد دومی هم باید بگم، اون هم همینطوری تحلیل میشه و در نهایت y=1

راهنمایی :هر وقت خواستی بدونی تحلیله یه برنامه چجوری میشه، اون برنامه را به صورت خط به خط اجرا کن.

[تصویر:  iran2.png]
۲۷-خرداد-۱۳۸۸, ۲۳:۰۲:۵۳
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : adameh_bahal
adameh_bahal آفلاین
كاربر تک ستاره
*

ارسال‌ها: 59
موضوع‌ها: 14
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 35
( 8 تشکر در 6 ارسال )
ارسال: #5
RE: متغير static
(۲۷-خرداد-۱۳۸۸, ۲۳:۰۲:۵۳)mahdi20 نوشته است:
نقل قول: يعنی تو اين 2 تا مثال s,y هر 2 همون مقدار صفر ميمونن و تغيير نميکنن ولی بقيه متقيرها يکی يکی اضافه ميشن؟

ببین تو اولی موقعی که برای بار اول تابع اف با ورودی های 2و4 فراخونی میشه ، در اول کار s=0. بعد در ادامه اجرای تابع یکی بهش اضافه میشه. خوب تا الن s=1 .حالا از تابع میاد بیرون و به برنامه ی main برمیگرده. دوباره تابع اف با ورودی های 3و5 فراخونی میشه. در اینجا میخواد مقداره اس را برابر 0 بزاره، ولی همین طور که گفتم متغير static فقط و فقط یک بار مقدار اولیه میگیره و اخرین مقدار خودش را حفظ میکنه پس 0 در اس ذخیره نمیشه و همون مقدار 1 که داشت باقی میمونه و همچنان در ادامه ی تابع یکی بهش اضافه میشه. پس در نهایت s=2

در مورد دومی هم باید بگم، اون هم همینطوری تحلیل میشه و در نهایت y=1

راهنمایی :هر وقت خواستی بدونی تحلیله یه برنامه چجوری میشه، اون برنامه را به صورت خط به خط اجرا کن.

در مورد x,y در اولی و x در دومی هم توضيح ميديد که چجوری تغيير ميکنن؟
بيشتر ميخوام بدونم متغير های static و غير static همزمان چطوری تغيير ميکنن
(آخرین ویرایش در این ارسال: ۲۷-خرداد-۱۳۸۸, ۲۳:۳۹:۴۳، توسط adameh_bahal.)
۲۷-خرداد-۱۳۸۸, ۲۳:۳۸:۰۲
ارسال‌ها
پاسخ
mahdi20 آفلاین
کاربر با تجربه
****

ارسال‌ها: 518
موضوع‌ها: 35
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 5261
( 1763 تشکر در 452 ارسال )
ارسال: #6
RE: متغير static
نقل قول: در مورد x,y در اولی و x در دومی هم توضيح ميديد که چجوری تغيير ميکنن؟
بيشتر ميخوام بدونم متغير های static و غير static همزمان چطوری تغيير ميکنن

در مورد x در اولی باید عرض کنم که این متغیر به صورته محلی در تابع ایجاد شده و فقط در تابع قابل استفاده هستش و در اینجا ، در ابتدا مقدار 0 دارد و سپس یکی به ان اضافه میشه.
ولی در مورد y این متغیر به صورته محلی در تابع ایجاد شده و هیچ مقداری هم نگرفته و در مورد اون ، برنامه بهت warning میده.

x در دومی همان وضعیت x در دومی را داره

[تصویر:  iran2.png]
۲۸-خرداد-۱۳۸۸, ۰۳:۵۲:۰۳
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : adameh_bahal
adameh_bahal آفلاین
كاربر تک ستاره
*

ارسال‌ها: 59
موضوع‌ها: 14
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 35
( 8 تشکر در 6 ارسال )
ارسال: #7
RE: متغير static
(۲۸-خرداد-۱۳۸۸, ۰۳:۵۲:۰۳)mahdi20 نوشته است:
نقل قول: در مورد x,y در اولی و x در دومی هم توضيح ميديد که چجوری تغيير ميکنن؟
بيشتر ميخوام بدونم متغير های static و غير static همزمان چطوری تغيير ميکنن

در مورد x در اولی باید عرض کنم که این متغیر به صورته محلی در تابع ایجاد شده و فقط در تابع قابل استفاده هستش و در اینجا ، در ابتدا مقدار 0 دارد و سپس یکی به ان اضافه میشه.
ولی در مورد y این متغیر به صورته محلی در تابع ایجاد شده و هیچ مقداری هم نگرفته و در مورد اون ، برنامه بهت warning میده.

x در دومی همان وضعیت x در دومی را داره

پس يعنی x در اولی وقتی بار اول فراخوانی ميشه يکی بهش اضافه ميشه و از صفر ميشه يک و بار دوم هم که فراخوانی ميشه بازم صفر ميشه و يکی بهش اضافه ميشه و ميشه يک؟
۲۸-خرداد-۱۳۸۸, ۰۹:۳۱:۲۵
ارسال‌ها
پاسخ
mahdi20 آفلاین
کاربر با تجربه
****

ارسال‌ها: 518
موضوع‌ها: 35
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 5261
( 1763 تشکر در 452 ارسال )
ارسال: #8
RE: متغير static
ایول!!!!!!!!!!!!
دقیقا!!!!!!!
خوده خودشه!!!!!!!!!!!!!!!!

[تصویر:  iran2.png]
۲۸-خرداد-۱۳۸۸, ۱۱:۲۳:۱۳
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : adameh_bahal
majidam20 آفلاین
تازه وارد

ارسال‌ها: 1
موضوع‌ها: 0
تاریخ عضویت: اردیبهشت ۱۳۹۱

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #9
RE: متغير static
اینکه نوشتید متغیرهای استاتیک فقط یک بار مقدار می گیرند من تست کردم اشتباهه هرباری یه مقدار جدید در یافت می کنند!!!
۱۶-اردیبهشت-۱۳۹۱, ۱۹:۳۵:۴۱
ارسال‌ها
پاسخ


پرش به انجمن:


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

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