4 回答
TA贡献1796条经验 获得超4个赞
void *p;它定义的不是指向void函数的指针,而是无类型指针
在C语言中规定,一个函数总是占用一段连续的内存区, 而函数名就是该函数所占内存区的首地址。 我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量, 使该指针变量指向该函数。然后通过指针变量就可以找到并调用这个函数。 我们把这种指向函数的指针变量称为“函数指针变量”。
函数指针变量定义的一般形式为:
类型说明符 (*指针变量名)();
其中“类型说明符”表示被指函数的返回值的类型。“(* 指针变量名)”表示“*”后面的变量是定义的指针变量。 最后的空括号表示指针变量所指的是一个函数。
所以你要改成
#include <iostream>
using namespace std;
void *v;
void *hello(){
cout << "hello world!" << endl;
return v;
}
void main(){
void *( *p)();
p=hello;
p();//这里为什么样不输入hello world呀?
}
我很疑惑,hello函数为什么要返回一个全局无类型指针变量
其实则样就可以
#include <iostream>
using namespace std;
void hello(){
cout << "hello world!" << endl;
}
int main(){
hello();
return 0;
}
不过如果你用的是Dev-c++就不行,它不支持void类型函数
TA贡献1865条经验 获得超7个赞
#include <iostream>
using namespace std;
void *hello(){
cout << "hello world!" << endl;
return 0;
}
int main(){
hello();
return 0;
}
hello这个函数可以直接输入,没有必要将它再赋给一个指针P,而且你定义的那个指针v我也不知道它是干嘛用的,类型还是void类型,很奇怪啊,void一般是定义函数类型,而不是定义变量类型的
TA贡献1803条经验 获得超6个赞
按照函数定义去调用就可以了。
实例:#include <iostream>
using namespace std;
void printstar(void)
{
cout<<"**********star****************"<<endl;
}
void print_message(void)
{
cout<<"Hello World!"<<endl;
}
int main(void)
{
printstar();//调用
print_message();//调用
printstar();//调用
return 0;
}
- 4 回答
- 0 关注
- 376 浏览
添加回答
举报