EDIT: Хорошо, я думаю, что теперь я понимаю:запрашивающая разъяснение относительно типа отливать
Случай 1:
#include <stdio.h>
#define function(_a) ((_a)*2)
int main() {
int (*func)(int) = function(0); // function(0) = 0
func(7);
...
}
синтаксис хорошо, однако, во время выполнения основной будет пытаться получить доступ адрес NULL, что приведет к сбою программного обеспечения в ошибке windows/segmentation в среде unix.
Случай 2:
#include <stdio.h>
#define function(_a) ((_a)*2)
int main() {
int (*func)(int) = function;
func(7);
...
}
ошибка компиляции, так как «функции», на самом деле макрос, а не фактическая функция, для этого, указатель на функцию не может указать на него, так сказать.
Случай 3 (правильный код):
#include <stdio.h>
int function(int _a){return ((_a)*2);};
int main() {
int (*func)(int) = function;
func(7);
...
}
ли я получил это право на этот раз?
это указатель на функцию, которая инициализируется 'NULL'. – Mysticial
http://cdecl.org/ –
в порядке, но что происходит при вызове функции, например 'func (7)'? – Caesar23