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 關注
- 396 瀏覽
添加回答
舉報