user-0 提问: 这错在哪啊？

回复:
user: user-1
content: void指针虽然能容纳全部类型，但是用的时候必须做类型转换。而且你那句只是赋值没有调用。代码的话参考15楼的就好了。不过15楼19行错了，是((PFUN)(buf[j]))(); 建议你了解下函数指针。

user: user-2
content: 把15楼代码改一行： (PFUN)(buf[j]); 改为： ((PFUN)(buf[j]))();

user: user-0
content: 引用 15 楼 nightkids_008 的回复:即使你代码没错也不会有打印的，你的buf[i]=hello，只是赋值，并没有调用。 #include <stdio.h>    void hello(void)//定义一个无返回值无形参类型的函数hello {     fprintf(stderr,"Hello!\n");//输出函数 }  typedef void (* PFUN)(void)  void func(void) {     void   *buf[10];  //定义一个无类型指针数组     static    int    i;  //定义静态局部变量i            for(i = 0; i < 10; i++) {         buf[i] = hello;     }     for(int j = 0; j < 10; ++j)     {         (PFUN)(buf[j]);     } }    int main(void) {     //int buf[1000];//定义一个长度为1000的整型数组            func();//函数调用            return 0; }这能运行？你确定？

user: user-3
content: 即使你代码没错也不会有打印的，你的buf[i]=hello，只是赋值，并没有调用。 #include <stdio.h>    void hello(void)//定义一个无返回值无形参类型的函数hello {     fprintf(stderr,"Hello!\n");//输出函数 }  typedef void (* PFUN)(void)  void func(void) {     void   *buf[10];  //定义一个无类型指针数组     static    int    i;  //定义静态局部变量i            for(i = 0; i < 10; i++) {         buf[i] = hello;     }     for(int j = 0; j < 10; ++j)     {         (PFUN)(buf[j]);     } }    int main(void) {     //int buf[1000];//定义一个长度为1000的整型数组            func();//函数调用            return 0; }

user: user-4
content: 看lz的代码，是想定义一个函数指针数组吗？ 若是函数指针数组，则修改那个数组定义就可以了，代码如下：  #include <stdio.h>  void hello(void)//定义一个无返回值无形参类型的函数hello { 	fprintf(stderr,"Hello!\n");//输出函数 }  void func(void) { //	char	*buf[10];  //定义一个无类型指针数组 	void	(*buf[10])(void); 	static	int    i;  //定义静态局部变量i 	 	for(i = 0; i < 30; i++) { 		buf[i] = hello; 	}	 }  int main(void) { 	int buf[1000];//定义一个长度为1000的整型数组 	 	func();//函数调用 	 	return 0; }

user: user-0
content: 怎么帮忙改下，是的其最后不崩溃，在Ubuntu下运行是输出了一段hello!后 出现段错误，核心已经存储。

user: user-0
content: #include <stdio.h>   void hello(void)//定义一个无返回值无形参类型的函数hello {     fprintf(stderr,"Hello!\n");//输出函数 }   void func(void) {     void   *buf[10];  //定义一个无类型指针数组     static    int    i;  //定义静态局部变量i           for(i = 0; i < 100; i++) {<-------越界/＊这怎么越界来着?*/         buf[i] = hello;     }     }   int main(void) {     int buf[1000];//定义一个长度为1000的整型数组           func();//函数调用           return 0; } 源程序是这样的，你们自己运行下，可以运行但是最终这程序会崩溃，主要错在数组越界。

user: user-0
content: 引用 1 楼 lunat 的回复:char    *buf[10];  //定义一个无类型指针数组  这叫无类型指针数组？ void * buf[30];打错了，我的错，本来是void * buf[30]这样的

user: user-1
content: 完全不明白这程序啥意思 main中的int buf[1000];摆设？ static    int    i;需要static？就当需要吧.... char    *buf[10];buf[i]=hello; ? 不是void *也不是函数指针，能buf[i]=hello？  完全意义不明

user: user-5
content: for(i = 0; i < 30; i++) {         buf[i] = hello;     } 注释什么的，就自己修改把。  #include <stdio.h>   void hello(void)//定义一个无返回值无形参类型的函数hello {     fprintf(stderr,"Hello!\n");//输出函数 }   void func(void) {     char    *buf[10];  //定义一个无类型指针数组     static    int    i;  //定义静态局部变量i           for(i = 0; i < 10; i++) {         buf[i] = "hello";     }     }   int main(void) {     int buf[1000];//定义一个长度为1000的整型数组           func();//函数调用           return 0; }

user: user-6
content: char    *buf[10];——这个为什么认为是无类型？应该像2楼说的void * 而且数组明显会溢出。。

user: user-7
content: 各种错，连注释都错

user: user-8
content: 楼上太厉害了，居然看懂了楼主的意图！

user: user-9
content: 地址的数组指针，指针没有分配内存空间吧！ 而且写的函数指针也不是这样吧！

user: user-10
content: 引用 2 楼 junlinfushi 的回复:buf[i] = hello;这个肯定是错的首先，你的hello如果是函数的话，那就应该加上括号。可是，你的hello()函数是void型的，所以，你的buf[i] = hello();也是错的

user: user-11
content: 你这程序有错吗，只是变量赋值而已！

user: user-10
content: buf[i] = hello;这个肯定是错的

user: user-2
content: char    *buf[10];  //定义一个无类型指针数组  这叫无类型指针数组？ void * buf[30];