首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >函数指针

函数指针

作者头像
大忽悠爱学习
发布2022-05-05 19:02:35
发布2022-05-05 19:02:35
33400
代码可运行
举报
文章被收录于专栏:c++与qt学习c++与qt学习
运行总次数:0
代码可运行

形式:数据类型(*指针变量名字)(参数的数据类型1,参数数据类型2…)=函数名(或者强制类型转换后的函数地址)

下面为Qt中的c语言代码: 函数名地址,变量地址等在vs中会一直变,因为每次启动程序都要重新分配内存,在qt中不会变,所以可以直接对函数名地址进行强制类型转换

代码语言:javascript
代码运行次数:0
运行
复制
#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来写

代码语言:javascript
代码运行次数:0
运行
复制
#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中只能用下面这种:

代码语言:javascript
代码运行次数:0
运行
复制
#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;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 形式:数据类型(*指针变量名字)(参数的数据类型1,参数数据类型2…)=函数名(或者强制类型转换后的函数地址)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档