int d() {return 0;} int i() {return 7;}
struct a { int(*b)(); }c={d};
typedef struct e{ struct a f; }g;
main() { struct e *h; h->f.b = i; }
我在尝试运行此程序时出现分段错误。任何人都可以证明理由吗?结构指针错误
而且我也试过像
int d() {return 0;} int i() {return 7;}
struct a { int(*b)(); }c={d};
typedef struct e{ struct a f; }g;
main() { struct e *h; h = (g)malloc(sizeof(g)); h->f.b = i; }
现在我得到这样的错误
funptrinstrct.c: In function `main': funptrinstrct.c:17: error: conversion to non-scalar type requested
回答这也将是明显的。
你仍然可以使用'g'就好,问题在于它不是一个指针。而你的道德(无论居高临下)是无关紧要的,因为这是一个错误,而不是一个警告。难以忽视的东西,不会给你可执行代码:-) – paxdiablo 2010-08-20 07:22:30
第一种情况下,它会发出警告 – Alam 2010-08-20 07:25:34
对,那是我排序然后。为此道歉:-) – paxdiablo 2010-08-20 07:41:35