PDA

View Full Version : سوال: آرایه ای از تابع ها ؟!!



Nabege
پنج شنبه 27 تیر 1392, 10:56 صبح
میگم تو c++ میشه آرایه ای از تابع ها رو تعریف کرد ؟
اگر میشه راهنمایی کنید ما هم یاد بگیریم.

مصطفی ساتکی
پنج شنبه 27 تیر 1392, 12:03 عصر
به این صورت با اشاره گر به تابع.

typedef void (*MyFunc)(void);
MyFunc a[100];

Nabege
پنج شنبه 27 تیر 1392, 17:06 عصر
خوب حالا چطوری محتویات تابع با اندیس مورد نظر رو بنویسم ؟؟؟

behnia_k
پنج شنبه 27 تیر 1392, 23:09 عصر
خوب حالا چطوری محتویات تابع با اندیس مورد نظر رو بنویسم ؟؟؟

ابتدا باید توابع مورد نظر را همانطور که قبلا مينوشتید بنویسد. سپس آدرس آنها را در متغیر تعریف شده قرار دهید.
اگر f1 نام یکی از ت.ابع باشد به شکل زیر
a[1] = f1

Nabege
شنبه 29 تیر 1392, 11:30 صبح
اگه میشه یه مثال خوب در مورد دو تا چیزی که گفتین بنویسید که بهتر بفهمیم :لبخندساده: :لبخندساده: :لبخندساده:

behnia_k
شنبه 29 تیر 1392, 11:47 صبح
void function0()
{
printf("function0\n");
};
void function1()
{
printf("function1\n");
};
void function2()
{
printf("function2\n");
};

int main(int argc, char* argv[])
{
int i;

typedef void (*MyFunc)(void);

MyFunc function[3];

function[0] = function0;
function[1] = function1;
function[2] = function2;

function[0]();
function[1]();
function[2]();

printf("enter function no:");
scanf ("%d", &i);
printf("\n call function%d\n", i);

if (0 <= i && i <=2) function[i]();

return 0;

}

Nabege
شنبه 29 تیر 1392, 15:56 عصر
میگم typedef void رو نمیشه خارج از تابع تعریف کرد ؟
بعدشم حالا اگر تابعمون وروردی خروجی داشته باشه اون موقع چی ؟
اگر زحمتی ندارد برای هر یک مثالی بزنید :لبخند::لبخند::لبخند:

behnia_k
یک شنبه 30 تیر 1392, 14:14 عصر
int function0(int i) { printf("function0:%d\n", i); return i * 10; };
int function1(int i) { printf("function1:%d\n", i); return i * 20; };
int function2(int i) { printf("function2:%d\n", i); return i * 30; };

typedef int (*MyFunc)(int);

int main(int argc, char* argv[])
{
int i, j;

MyFunc function[3];

function[0] = function0;
function[1] = function1;
function[2] = function2;

j = function[0](10);
j = function[1](20);
j = function[2](30);

printf("enter function no:");
scanf ("%d", &i);
printf("\n call function%d\n", i);

if (0 <= i && i <=2) j = function[i](20);
return 0;
}

Nabege
دوشنبه 31 تیر 1392, 09:53 صبح
خوب په چرا MyFunc function[3]; رو داخل main تعریف کردید؟؟؟

behnia_k
دوشنبه 31 تیر 1392, 22:00 عصر
MyFunc function[3];

برای ما یه آرایه سه تائی تعریف میکند. اگر خارج از main تعریف کنیم سراسری دیده خواهد شد اگر لازم است آنرا خارج از main تعریف کنید.
در این مرحله همانند تعریف دیگر متغیرهاست.

Nabege
چهارشنبه 02 مرداد 1392, 06:59 صبح
من همه رو خارج از main تعریف کردم ولی وقت اجراش کردم (با کامپایلر visual studio) ارور defauly-int رو داد به نظرتون علت چیه ؟؟؟

behnia_k
شنبه 05 مرداد 1392, 17:48 عصر
int function0(int i) { printf("function0:%d\n", i); return i * 10; };
int function1(int i) { printf("function1:%d\n", i); return i * 20; };
int function2(int i) { printf("function2:%d\n", i); return i * 30; };

typedef int (*MyFunc)(int);

MyFunc function[3] = { function0, function1, function2 };

int mainTest(int argc, char* argv[])
{
int i, j;

j = function[0](10);
j = function[1](20);
j = function[2](30);

printf("enter function no:");
scanf ("%d", &i);
printf("\n call function%d\n", i);

if (0 <= i && i <=2) j = function[i](20);
return 0;
}