powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / с. массив указателей на функции +
9 сообщений из 9, страница 1 из 1
с. массив указателей на функции +
    #38001086
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
динамический сделал

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
inline double plus(int a, int b)
{
	return ((double)a + b);
}
inline double minus(int a, int b)
{
	return ((double)a - b);
}
inline double divide(int a, int b)
{
	return ((double)a / b);
}
inline double multiply(int a, int b)
{
	return ((double)a * b);
}
.....
double (*(*f))(int a, int b);
....
f = (double(*(*))(int a, int b)) malloc(4 * sizeof(double(*)(int a, int b)));

f[0] = plus;
f[1] = minus;
f[2] = multiply;
f[3] = divide;


что то
не удается сообразить как сделать статический
с инициализацией f[] ={plus, minus, multiply, divide};
и как получить память не через malloc, а через new
...
Рейтинг: 0 / 0
с. массив указателей на функции +
    #38001123
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingiz,
typedef тебе в помощь ))

Код: plaintext
1.
2.
3.
typedef ( double ( *arithmetic_function )( int a, int b ) );

arithmetic_function *f = new arithmetic_function[ 4 ];

P.S. скобочки не проверял
...
Рейтинг: 0 / 0
с. массив указателей на функции +
    #38001126
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingizне удается сообразить как сделать статический
с инициализацией f[] ={plus, minus, multiply, divide};
Просто:
Код: sql
1.
2.
3.
typedef double (*(*fun))(int a, int b);

fun f[] ={plus, minus, multiply, divide};


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
с. массив указателей на функции +
    #38001127
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorych,
ну и на стеке, соответственно:
Код: plaintext
1.
arithmetic_function f1[ 4 ] = { plus, minus, multiply, divide };
...
Рейтинг: 0 / 0
с. массив указателей на функции +
    #38001303
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а без typedef-а что ли никак? в общем похоже делал.
...
Рейтинг: 0 / 0
с. массив указателей на функции +
    #38001490
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingizа без typedef-а что ли никак? в общем похоже делал.
Без typedef тоже можно.
Код: plaintext
1.
double (*arr[])(int a, int b) = {...}



Но лучше писать читаемый код, а не write-only.
...
Рейтинг: 0 / 0
с. массив указателей на функции +
    #38002413
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky,
да. все не мог догадаться куда втулить скобки.
А надо формально читать приоритет операций. Тогда логика объявлений будет понятна.
И для понимания логики пример полезен.


Код: plaintext
1.
2.
3.
4.
..............arr......  arr
..................[]   это массив
............*....         указателей на 
double .......... (int a, int bc)  функции с такой сигнатурой

теперь ясно как божий день.
...
Рейтинг: 0 / 0
с. массив указателей на функции +
    #38002421
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*куда втулить квадратные скобки
...
Рейтинг: 0 / 0
с. массив указателей на функции +
    #38002524
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tchingiz,

Я рекомендую так объявлять:

Код: plaintext
1.
2.
typedef double func_type(int a, int b);
func_type* arr[] = {...};


Это наиболее читаемая форма объявления массива указателей на функции.
В первой строке виден без визуального мусора прототип функции.
Во второй строке видно что это массив указателей.
Все просто и понятно.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / с. массив указателей на функции +
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]