形式:数据类型(*指针变量名字)(参数的数据类型1,参数数据类型2…)=函数名(或者强制类型转换后的函数地址)
下面为Qt中的c语言代码:
函数名地址,变量地址等在vs中会一直变,因为每次启动程序都要重新分配内存,在qt中不会变,所以可以直接对函数名地址进行强制类型转换
#include "mainwindow.h"
#include<stdio.h>
#include <QApplication>
#include<QDebug>
void func(int a, int b)
{
printf("%d+%d\n", a, b);
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
//函数名是函数首地址
printf("%d\n", func);
//函数指针
void(*fun)(int, int) = func;
//强制类型转换,12980724---func函数名首地址,函数名地址在vs中会一直变,在qt中不会变
void(*fun1)(int, int) = (void(*)(int,int))4200025;
fun(10,20);
fun1(30, 40);
return a.exec();
}
也可以用Qt中qDebug来写
#include "mainwindow.h"
#include<stdio.h>
#include <QApplication>
#include<QDebug>
void func(int a, int b)
{
qDebug("%d+%d\n", a, b);
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
//函数名是函数首地址
qDebug("%d\n", func);
//函数指针
void(*fun)(int, int) = func;
//强制类型转换,12980724---func函数名首地址,函数名地址在vs中会一直变,在qt中不会变
void(*fun1)(int, int) = (void(*)(int,int))4200025;
fun(10,20);
fun1(30, 40);
return a.exec();
}
vs中只能用下面这种:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void func(int a, int b)
{
printf("%d+%d", a, b);
}
int main()
{
//函数指针
void(*fun)(int, int) = func;
fun(10,20);
return 0;
}