Кусок кода C, который, вероятно, что-то делает с памятью - PullRequest
1 голос
/ 04 марта 2012

Пару дней назад я наступил на следующий фрагмент кода, и я не уверен, что он делает точно.

int (*func) ();
func = (int (*) () ) some_array_here;
(int) (*func) ();

Первая строка выглядит как целочисленный указатель, но () вызывает меня,Вторая строка выглядит как актерский состав, а третья - я не знаю.Ребята, вы можете помочь?Спасибо

Ответы [ 2 ]

9 голосов
/ 04 марта 2012

В первой строке указывается указатель на функцию. Вторая строка приводит some_array_here к указателю на функцию. Третья строка вызывает вызов функции через этот указатель.

Я предполагаю, что контекст является своего рода примером кодирования оболочки (то есть выполнения введенного пользователем кода). Вы никогда не должны делать это в реальной жизни.

1 голос
/ 04 марта 2012

В первой строке func - указатель на функцию с типом возвращаемого значения int.

2-я строка приводит some_array_here к указателю функции.

3-я строка - это вызов функции с использованием указателя func.

См. Это: http://c -faq.com / decl / spiral.anderson.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...