sourcecode
چهارشنبه 30 دی 1394, 17:52 عصر
سلام
مشکل من روی static هست چرا وقتی تابع را به صورت void test(static int size) مینویسم(شماره 1) پس از هر بار اجرا خروجی تابع ثابت هست یعنی 2 و 2 و 2 ... ولی در صورتی که تابع بدون آرگومان شود و static int size را درون تابع بنویسیم(شماره 2) با هر بار اجرا یک واحد به آن افزوده میشود یعنی 2 و 3 و 4 ... مشکل من اینه که چه فرقی میکنه که جوابها فرق داره ؟ محدوده static محلی هست و درون یک تابع هست پس چرا جواب ها با هم فرق دارد؟؟؟
*********************1**********************
void test(static int size)
{
size++;
cout « size « endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
test(1);
test(1);
test(1);
cout « endl;
system("pause");
return 0;
}
**********************2*********************
void test()
{
static int size;
size++;
cout « size « endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
test();
test();
test();
cout « endl;
system("pause");
return 0;
}
مشکل من روی static هست چرا وقتی تابع را به صورت void test(static int size) مینویسم(شماره 1) پس از هر بار اجرا خروجی تابع ثابت هست یعنی 2 و 2 و 2 ... ولی در صورتی که تابع بدون آرگومان شود و static int size را درون تابع بنویسیم(شماره 2) با هر بار اجرا یک واحد به آن افزوده میشود یعنی 2 و 3 و 4 ... مشکل من اینه که چه فرقی میکنه که جوابها فرق داره ؟ محدوده static محلی هست و درون یک تابع هست پس چرا جواب ها با هم فرق دارد؟؟؟
*********************1**********************
void test(static int size)
{
size++;
cout « size « endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
test(1);
test(1);
test(1);
cout « endl;
system("pause");
return 0;
}
**********************2*********************
void test()
{
static int size;
size++;
cout « size « endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
test();
test();
test();
cout « endl;
system("pause");
return 0;
}