int main(int argc, char **argv)
{
int (*func)();
func = (int (*)()) code;
(int)(*func)();
}
переменная кода имеет некоторую шеллкода в немМожете ли вы помочь мне объяснить следующий код C?
int main(int argc, char **argv)
{
int (*func)();
func = (int (*)()) code;
(int)(*func)();
}
переменная кода имеет некоторую шеллкода в немМожете ли вы помочь мне объяснить следующий код C?
code
вероятно является переменной, которая соответствует адресу некоторого машинного кода в памяти. Затем указатель на функцию, которая не принимает никакого параметра и возвращает int, устанавливается на этот адрес и вызывается функция. int f()
является прототипом для функции без параметров и int в качестве возвращаемого значения, тогда int (*pf)()
является указателем на такую функцию.
«_takes no parameter_» - На самом деле, это должно быть «принимает неопределенное количество аргументов» –
Правильно, использовало правило C++ ... –
Функциональные указатели. Этот фрагмент кода должен помочь вам понять.
#include <stdio.h>
int Hello();
int code();
int main(int argc, char **argv)
{
int (*func)(); //pointer to function that takes no arguments quivalent to: int (*func)(void);
func =&Hello;
int x = func();
printf("%d\n", x);
func = (int (*)()) code; // Assigns the pointer from the code function to the func pointer
x = code();
printf("%d", x);
}
int code()
{
printf("code returns: ");
return 500;
}
int Hello()
{
printf("hello returns: ");
return 1;
}
В какой части указанного кода у вас есть вопросы? Одна конкретная линия? Все три линии? Пожалуйста, постарайтесь быть более конкретными. –
все три строки .. не знаю, что каждый из них означает –