c++的输出对于函数指针的指针名的识别定义
int add(){
return 0;
}
int main()
{
int (*func)(void);
func=add;
cout<<func<<endl;
return 0;
}
为什么打印出的数据不是func的地址而是数字1 本帖最后由 zhangjinxuan 于 2022-12-8 08:05 编辑
不要用cout,不仅慢,很多的类型他都不认识,就比如函数指针,cout 不认识,就只能随便输出,当然我也不知道为什么会输出 1,可能是对它进行强制转换得到的结果吧
毕竟,你给 cout 一个函数指针,他也不知道到底是打印它的地址还是打印它的返回值,printf 就解决了这一问题,使用格式符就可以告诉编译器这个变量要怎么输出
用 printf 吧:
#include <bits/stdc++.h>
using namespace std;
int add()
{
return 0;
}
int main()
{
int (*func)(void);
func=add;
printf("%p", func);
return 0;
} 本帖最后由 jhq999 于 2022-12-8 08:56 编辑
cout<<hex<<int(add)<<endl;
更多就了解一下#include<iomanip>
例如里面的setw,setfill等等 operator <<没有重载函数指针, 有重载一个bool类型的参数,函数指针转换成bool类型的时候就变成了 1 。
页:
[1]