C语言深入了解指针(3)-- 字符指针变量,数组指针变量,函数指针变量,函数指针数组,回调函数

QT+QGIS跨平台编译(基于Qt,采用一套代码、一套框架,完成QGIS第三方库、核心库、应用程序的跨平台编译) QT+QGIS跨平台编译。 基于Qt,采用一套代码、一套框架,完成QGIS第三方库、核心库、应用程序的跨平台编译。 阅读详情

目录

1. 字符指针变量

2. 数组指针变量

2.1 数组指针变量定义

2.2 数组指针初始化

3. 二维数组传参的本质

4. 函数指针变量

4.1 函数指针变量的创建

4.2函数指针的使用 

4.3 typedef关键字

5. 函数指针数组

6. 转移表

7. 回调函数


1. 字符指针变量

        字符指针char*,与整型指针int*类似,只是字符指针指向的对象是一个char类型的数据,用于存放char类型数据的地址。

        一般的使用:

#include <stdio.h>

int main()
{
    char ch = 'w';
    char* pc = &ch;
    *pc = 'w';
    return 0;
}

        还有一种使用方式:

#include <stdio.h>

int main()
{
    const char* pstr = "hello bit.";
    printf("%s\n", pstr);
    return 0;
}

        上述的代码表示把首字符‘h’的地址放到了pstr中。并不是把'hello bit.'字符串放到pstr中。 

         《剑指offer》中收录了⼀道和字符串相关的笔试题:

#include <stdio.h>
int main()
{
    char str1[] = "hello bit.";
    char str2[] = "hello bit.";
    const char *str3 = "hello bit.";
    const char *str4 = "hello bit.";
    if(str1 == str2)
        printf("str1 and str2 are same\n");
    else
        printf("str1 and str2 are not same\n");
 
    if(str3 == str4)
        printf("str3 and str4 are same\n");
    else
        printf("str3 and str4 are not same\n");
 
    return 0;
}

        这⾥str3和str4指向的是⼀个同⼀个常量字符串。C/C++会把常量字符串存储到单独的⼀个内存区域,当⼏个指针指向同⼀个字符串的时候,他们实际会指向同⼀块内存。但是⽤相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块。所以str1和str2不同,str3和str4相同。

2. 数组指针变量

2.1 数组指针变量定义

        指针数组是一种数组,数组中存放的是地址(指针)。而数组指针变量是指针(变量)。

        整形指针变量: int * pint; 存放的是整形变量的地址,能够指向整形数据的指针。  

        浮点型指针变量: float * pf; 存放浮点型变量的地址,能够指向浮点型数据的指针。

        数组指针变量:存放的是数组的地址,能够指向数组的指针变量。

int* p1[10];    // 指针数组
int(*p2)[10];   // 数组指针

        p1先和[10]结合,说明它是一个存放是个元素的数组,前面的int* 是数组中存放的元素类型。叫做指针数组。       

        p2先和*结合,说明p2是一个指针变量,然后指向的是一个大小为10个整型的数组。所以p2是一个指针,指向一个数组,叫数组指针。 

注:[]的优先级要高于*号,所以必须加上()来保证先和*结合。

2.2 数组指针初始化

int arr[10] = {0};
int(*p)[10] = &arr;

        上述代码是把数组arr的地址存入p指针变量中,而这个数组是一个可以存放十个整型数据的数组。除开(*p),int [10] 表示的就是这个数组的类型。 

3. 二维数组传参的本质

       之前一个二维数组需要传参给一个函数的时候,我们这样写:

#include <stdio.h>

void test(int a[3][5], int r, int c)
{
    int i = 0;
    int j = 0;
    for (i = 0; i < r; i++)
    {
        for (j = 0; j < c; j++)
        {
            printf("%d ", a[i][j]);    
        }
        printf("\n");
    }
}

int main()
{
    int arr[3][5] = {{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7}};
    test(arr, 3, 5);
    return 0;
}

        这里的形参写成二维数组的形式,接下来介绍用数组指针的形式表示这个形参。

        首先,二维数组其实可以看作每个元素是一维数组的数组,也就是二维数组的每个元素是一个一维数组,那么二维数组的首元素就是第一行,是一个一维数组。

        根据数组名是数组首元素的地址,二维数组的数组名表示的就是第一行的地址,是一维数组的地址。第一行的一维数组的类型就是int [5],所以第一行的地址的类型就是数组指针类型int(*)[5]。那就意味着二维数组传参本质上就是传递了地址,传递的是第一行这个一维数组的地址。则上述函数test()的形参int a[3][5]可以修改为int (*p)[5].

        总结:二维数组传参,形参的部分可以写成数组,也可以写成指针形式,和一维数组传参类似。

4. 函数指针变量

4.1 函数指针变量的创建

        根据整型指针,字符指针,数组指针类比,不难得出结论:函数指针变量是用来存放函数地址的,未来通过地址能够调用函数。函数是有地址的,并且函数名就是函数的地址,也可以通过&函数名的方式获得函数的地址,使用或者不使用 & 获得的都是函数的地址。函数指针变量的写法其实和数组指针非常类似。如下:

#include <stdio.h>

void test()
{
    printf("hehe\n");
}

void (*pf1)() = &test;
void (*pf2)() = test;

int Add(int x, int y)
{
    return x + y;
}

int (*pf3)(int, int) = Add;
int (*pf4) (int x, int y) = &Add; //x和y写上或者省略都是可以的

int main()
{
    printf("pf1的地址: %p, pf2的地址: %p\n", pf1, pf2);
    printf("pf3的地址: %p, pf4的地址: %p\n", &pf3, pf4);
    return 0;
}

4.2函数指针的使用 

        通过函数指针调用指针指向的函数:

#include <stdio.h>

int Add(int x, int y)
{
    return x+y;
}

int main()
{
    int (*pf3)(int, int) = Add;

    printf("%d\n", (*pf3)(2, 3));
    printf("%d\n", pf3(3,5));
    return 0;
}

        输出结果分别为5和8。因为函数名对应的就是&函数名,*和&是一对性质相反的操作符,所以上述对函数指针是否带有解引用符合*都是对函数指针的解引用。 

4.3 typedef关键字

        typedef是用来类型重命名的, 可以将复杂的类型简单化。比如觉得unsigned int 写起来不方面,可以把它重命名为uint:

typedef insigned int uint;
//将unsigned int 重命名为uint

        指针类型也是可以重命名的,比如将int* 重命名为ptr_t。

//重命名int*为ptr_t;
typedef int* ptr_t;

//如果我们有数组指针类型int(*)[5],需要重命名为parr_t
typedef int(*parr_t)[5]; //新的类型名必须在*的右边

//如果将void(*)(int)类型重命名为pfun_t,就可以这样写
typedef void(*pfun_t)(int);

5. 函数指针数组

        函数指针数组可以类比与指针数组,函数指针数组本质上是一个数组,数组中存放的是函数指针(即函数的地址)。

        定义函数指针数组:

int (*parr1[3])();

        parr1先和[]结合,说明parr1是数组。去掉parr1[3],剩下的就是数组中存放的数据类型,则为int (*)(),该类型是一个返回值为int且没有参数的函数指针类型。 

        函数指针数组在实际的应用中并不多见,所以在这不做过多介绍。

6. 转移表

         函数指针数组的用途:转移表

#include <stdio.h>
int add(int a, int b)
{
    return a + b;
}
int sub(int a, int b)
{
    return a - b;
}
int mul(int a, int b)
{
    return a * b;
}
int div(int a, int b)
{
    return a / b;
}
int main()
{
    int x, y;
    int input = 1;
    int ret = 0;
    do
    {
        printf("*************************\n");
        printf(" 1:add 2:sub \n");
        printf(" 3:mul 4:div \n");
        printf(" 0:exit \n");
        printf("*************************\n");
        printf("请选择:");
        scanf("%d", &input);
        switch (input)
        {
            case 1:
                printf("输⼊操作数:");
                scanf("%d %d", &x, &y);
                ret = add(x, y);
                printf("ret = %d\n", ret);
                break;
            case 2:
                printf("输⼊操作数:");
                scanf("%d %d", &x, &y);
                ret = sub(x, y);
                printf("ret = %d\n", ret);
                break;
            case 3:
                printf("输⼊操作数:");
                scanf("%d %d", &x, &y);
                ret = mul(x, y);
                printf("ret = %d\n", ret);
                break;
            case 4:
                printf("输⼊操作数:");
                scanf("%d %d", &x, &y);
                ret = div(x, y);
                printf("ret = %d\n", ret);
            break;
            case 0:
                printf("退出程序\n");
                break;
            default:
                printf("选择错误\n");
                break;
         }
    } while (input);
    return 0;
}

        上述代码创建一个菜单列表,可以选择加减乘除这四种算数运算并在选择之后输入两个数字可以得到对应的结果。可以看出在switch语句中每一个case都有很多相同的代码,于是我们可以考虑用函数指针数组来实现转移表:

#include <stdio.h>
int add(int a, int b)
{
    return a + b;
}
int sub(int a, int b)
{
    return a - b;
}
int mul(int a, int b)
{
    return a*b;
}
int div(int a, int b)
{
    return a / b;
}
int main()
{
    int x, y;
    int input = 1;
    int ret = 0;
    int(*p[5])(int x, int y) = { 0, add, sub, mul, div }; //转移表
    do
    {
        printf("*************************\n");
        printf(" 1:add 2:sub \n");
        printf(" 3:mul 4:div \n");
        printf(" 0:exit \n");
        printf("*************************\n");
        printf( "请选择:" );
        scanf("%d", &input);
        if ((input <= 4 && input >= 1))
        {
            printf( "输⼊操作数:" );
            scanf( "%d %d", &x, &y);
            ret = (*p[input])(x, y); //通过函数指针数组来调用函数
            printf( "ret = %d\n", ret);
        }
        else if(input == 0)
        {
            printf("退出计算器\n");
        }
        else
        {
            printf( "输⼊有误\n" ); 
        }

7. 回调函数

        回调函数:是一个通过函数指针进行调用的函数。

        把一个函数的地址作为参数传递给另一个函数,当这个地址被用来调用其所指向的函数时,被调用的函数就是回调函数。

        上述改造后的转移表中,使用函数指针数组选择某个函数进行数据的处理这种形式,被调用的用于处理数据的那个函数就被称为回调函数。

【用unity实现100个游戏之1】制作类元气骑士、挺进地牢——俯视角射击游戏多种射击效果(一)(附源码) 俯视角射击游戏)是一类以俯视视角进行游戏展示的射击游戏。在这种游戏中,玩家控制着一个角色或载具,从俯视的角度上方观察游戏世界,并与敌人进行战斗。这种视角使玩家能够有更好的全局观察和策略性,同时也强调快速反应和精确射击。视角:俯视角度可以是固定的,也可以随着玩家角色的移动而变化,但都允许玩家以全局视角观察整个战场,有利于制定战略和规划行动。射击:玩家通常需要使用各种武器来与敌人进行战斗,包括枪械、爆炸物等。射击动作依赖于玩家的反应速度和准确性。 阅读详情

相关推荐

机器学习第四个算法ANN(人工神经网络)

我是在14年9月刚读研的时候听到一个说法叫“类人脑算法”很火热,之后搞了很长一段时间相关的蓄水池算法等,但大都没有摸到门路而中途放弃了。现今看来,还是缺少一些知识背景,也不善于在网络上学习,随时间推移,也逐渐明白这是机器学习的一小部分,并且逐渐发展的名称叫做人工神经网络的算法,如果网络层较多,又会有个别名,叫做深度学习。其中个用到的最著名的算法是背向传输算法(backpropagation),而这个

legalhighhigh的博客 1万+

C语言中函数指针和回调函数的详解

函数指针:指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是大体一致的。函数指针有两个用途:调用函数和做函数...

weixin_39939425的博客 8万+

别再瞎调参数了!用MATLAB fmincon优化傅里叶级数,为你的机器人设计“完美”激励轨迹

本文详细介绍了如何利用MATLAB的fmincon优化器设计机器人激励轨迹,通过优化傅里叶级数参数,解决传统试错法的低效问题。文章涵盖了目标函数设计、约束条件转化及优化算法选择,帮助工程师实现高精度的系统辨识和动力学参数优化。

weixin_42613501的博客 240

c语言指针(深入了解指针)

由浅到深全面的了解指针(小马带你拿下指针的学习)

小马同学的博客 2万+

Palabos User Guide中文解读 | 第五章 | Palabos编程 (跳过了第四章Palabos-Java接口)

作者的话:本人在学习palabos时,发现国内中文资料甚少,恰好网上可以直接搜到palabos user guide这种英文资料,加之时间充裕,便打算开始翻译,翻了一节后发现这可能算侵权,就比较伤脑筋,突然想到自己写中文解读即可,便有了下面的博客。 Palabos User Guide Release 1.0 r1 Copyright © 2019 University of Geneva Jul...

Yulan Fang's notes. 2298

【unity游戏开发之InputSystem——01】通过写代码监听InputSystem输入(基于unity6开发介绍)

通过写代码监听InputSystem输入(基于unity6开发介绍)

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4892

C语言指针详解

指针详解

ltzoro的博客 1万+

Python爬虫实战:高效爬取华尔街日报文章的技术与代码详解

在当今信息爆炸的时代,金融数据和分析对于投资者、研究人员和企业决策者来说至关重要。华尔街日报(WSJ)作为全球最具影响力的财经媒体之一,其文章内容具有极高的价值。本文将详细介绍如何使用Python最新技术构建一个高效、稳定的华尔街日报文章爬虫,涵盖从基础到高级的各种技术要点。本文详细介绍了如何使用Python最新技术构建一个高效、稳定的华尔街日报文章爬虫。我们从基础爬虫实现开始,逐步添加了高级功能如分布式处理、反反爬虫策略、数据清洗和存储等。异步处理:使用asyncio和httpx实现高性能网络请求。

2201_76125261的博客 385

指针数组,数组指针,函数指针及应用(回调函数)

指针数组与数组指针   当我们在学习指针与数组时总会遇到两个令人容易混淆的概念:数组指针与指针数组。   在这里数组指针是指向数组的指针,其本质为指针指向的对象是数组。由于数组的形式多样所以数组指针的表达也十分多样。   同理,指针数组就是存放指针的数组,其本质为数组。   由于“[ ]”的优先级高于“ * ”的优先级,指针数组与数组指针的表达可做如下表示: int p1 [10];...

Erica_ou的博客 1万+

AUTOSAR SHE 密钥更新协议

依赖内存槽的使用用例,内存槽有不同的保护协议。M2是新的计数值C_ID‘,相应的标志位F_ID',0填充第一个块,以及新的密钥K_ID'的组合的CBC算法加密的消息。例如,我要更新一个MASTER_ECU_KEY, 那么参考上表,我需要知晓Non-volatile的MASTER_ECU_KEY (即授权密文为MASTER_ECU_KEY自己的密文).内存的更新协议分为两部分,第一部分是实际内存更新到发送一个秘密且真实的key到SHE,然后第二部分为验证,即提供给后台一个key更新成功的证据。

weixin_46481662的博客 3279

中台战略-第五章、中台建设方法论

文章目录第五章、中台建设方法论5.1 中台架构整体策略5.2 业务顶层设计5.3 业务中台设计方法论5.3.1 能力支撑是基础5.3.2 中心自治是承载形式5.3.3 3层模型是骨架5.3.4 5步法是指导思想1. 业务抽象2. 高阶设计3. 组件建模4. 开发交付5. 持续运营5.4 数据中台设计方法论5.4.1 总体规划5.4.2 数据集成5.4.3 模型建设5.4.4 通用研发5.4.5 资产管理5.4.6 数据服务5.5 应用向中台迁移的3中途径和方法5.5.1 方法1:新应用替换旧应用5.5.2

沧海之巅的专栏 1461

【C语言】指针进阶:字符指针&&数组指针&&函数指针

✨作者:@平凡的人1 ✨专栏:《C语言从0到1》 ✨一句话:凡是过往,皆为序章 ✨说明: 过去无可挽回, 未来可以改变 🌹感谢您的点赞与关注,同时欢迎各位有空来访我的🍁平凡舍 文章目录@[toc]🚀前言🚀字符指针🚀指针数组🚀数组指针🍁&数组名 与 数组名🍁数组指针的使用🚀数组传参、指针参数🍁一维数组传参🍁二维数组传参🍁一级指针传参🍁二级指针传参🚀函数指针🚀结语 🚀前言 回想之前,我们学了指针的一些基础👉 指针与结构体 我们知道了指针的概念: 指针就是个变量,用来存放地址,地址唯一.

weixin_60478154的博客 8416

27、VXLAN BGP EVPN网络的自动化部署与运维管理

本文深入探讨了VXLAN BGP EVPN网络从初始配置到运维管理的全生命周期自动化流程,涵盖Day-0设备自动上线、Day-0.5增量变更与连接验证、Day-1覆盖服务配置与计算集成,以及Day-2监控与故障排查。详细介绍了推送与拉取两种配置模型、主流工具如Cisco VTS、NFM、DCNM的功能特点,以及开源自动化工具的应用。通过流程图和命令示例,系统展示了MAC/IP学习、BGP通告和VXLAN封装的验证方法,为构建高效、可扩展的数据中心网络提供了全面的技术指导。

banana的博客 81

【C语言】——指针四:字符指针与函数指针变量

对字符指针与函数指针有疑惑?快快看过来!

yusjushd的博客 1808

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C语言指针:指针数组、数组指针、函数指针及函数指针数组

指针数组:存放指针的数组。 数组指针变量:存放的是数组的地址。 函数指针变量:存放的是函数地址。 函数指针数组:存储函数地址的数组。 转移表所指的就是运用函数指针数组以数组的方式去调用里面的函数。

m0_62183318的博客 7370

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

(使用C语言详解)指针数组、数组指针、函数指针、函数指针的数组、指向函数指针数组的指针

本文主要讲解了C语言中的五种指针类型:指针数组、数组指针、函数指针、函数指针的数组以及指向函数指针数组的指针。这些指针类型在C语言编程中有着广泛的应用,掌握它们对于深入理解C语言以及进行高效的C语言编程都具有重要意义。指针数组是一种数组,其元素为指针;数组指针则是一个指向数组的指针,它可以指向数组的首地址,也可以指向数组的任一元素。函数指针则是指向函数的指针,通过它我们可以调用函数。函数指针的数组则是一个数组,其元素为函数指针;指向函数指针数组的指针则是一个指针,它指向函数指针数组。

StarPrayers.的博客 6326

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C语言指针进阶之三——函数指针、函数指针数组、指向函数指针数组的指针

平常我们说这样一个类型比如:unsigned int这个类型,我们觉得每次书写都太长了很麻烦,那我们就可以进行类型重定义:那么下次我们书写的时候就可以使用uint来代替unsigned int,使得类型简化。同样的,对于指针类型也可以重定义,比如将int *重定义那么原来的:int * p1就可以改写为: ptr p1同理,也可以对我们的数组指针或者函数指针类型进行重定义,但是稍微不同的是,重定义的类型名要和*在一起。比如:这是一个数组指针类型:int (*)[10];如何进行类型重定义?

m0_71503225的博客 6633

【C语言】深度剖析指针和数组的关系

指针和数组到底有什么关系?

学了就忘是正常现象 3248

c语言函数指针与回调函数

目录一、指针1、指针2、野指针与空指针3、指针的算术运算4、指针数组:(多个地址)由指针变量组成的数组。5、多级指针:C 允许指向指针的指针。6、传递指针给函数:通过引用或地址传递参数,使传递的参数在调用函数中被改变。7、从函数返回指针(地址)二、函数指针1、声明2、定义3、调用:可直接用指针调用。三、回调函数指针:指向(/存储)其他变量的地址,该变量的数据类型需与指针的数据类型保持一致。等价于: 2、野指针与空指针 野指针:没有为指针附地址,此时指针任意指向一个地址,不利于程序安全。空指针:指针附N

Daisy_0818的博客 2385

C语言——函数指针

函数指针 C语言中的指针类型有很多种,但是函数指针可能有些小伙伴没听过,下面我们引入一段定义。 函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。 一、C语言中的函数指针咋来的? 1、函数是C语言中的一段代码; 2、编译器把这个C代码转成二进制指令,放到可执行文件中; 3、操作系统执行这个程序的时候(比如双击exe文件),就还把这个二进制的文件指令加载到内存中; 4、在内存中,就

qq_49044908的博客 7572

【C语言指针超详解(四)】--字符指针变量,数组指针变量,二维数组传参的本质,函数指针变量,函数指针数组,转移表

-之前我们学习了指针数组,指针数组是一种数组,数组中存放的是地址(指针)。那么这里的数组指针肯定就是一个指针变量了。int * pint;存放的是整形变量的地址,能够指向整形数据的指针。float * pf;存放浮点型变量的地址,能够指向浮点型数据的指针。​​​那么数组指针变量应该就是:存放的是数组的地址,能够指向数组的指针变量。下面两串代码分别是什么其中的p1和p2又代表什么?1int* p1[10//这是一个指针数组//这里的p1是数组名2int(*p2)[10。

会当凌绝顶,一览众山小 1689

#C语言——学习攻略:深挖指针路线(四)--字符指针变量,数组指针变量,二维数组传参的本质,函数指针变量,函数指针数组

本文主要探讨了C语言中指针变量的不同类型及其使用方式。首先介绍了字符指针变量的三种使用方式,包括指向字符变量、字符数组和常量字符串的情况,并通过例题解释了不同存储方式导致的地址差异。其次讲解了数组指针变量的定义和初始化方法,强调其与指针数组的区别。在二维数组传参部分,分析了数组形式和指针形式的参数传递本质。文章还详细介绍了函数指针变量的创建和使用方式,并通过两个复杂代码示例展示了函数指针的高级应用。最后简要提及了typedef关键字对复杂类型的简化和函数指针数组的概念。全文通过丰富示例系统讲解了指针变量的各

晨非辰的学习记录博客~~ 1155

C语言指针进阶_字符指针、指针数组、数组指针、函数指针等的介绍

C语言指针进阶_字符指针、指针数组、数组指针、数组指针定义、数组指针的解引用、数组指针的使用、数组传参和指针传参、一维数组传参、二维数组传参、一级指针传参、二级指针传参、函数指针、函数指针的使用等的介绍。数组传参,形参的部分可以写成数组,也可以写成指针。void test(int arr[]) // arr是一维数组,可以用一维数组接收,一维数组可以不指定大小{}void test(int arr[10]) // 一维数组也可以指定大小{}

Farewell_me的博客 1934

C语言中的数组与函数指针:深入解析与应用

从字符串数组的基础知识出发,逐步探讨函数指针的概念与应用。我们将首先回顾字符串数组的基本概念和应用场景,然后逐步引入函数指针的概念,并详细阐述其在编程中的高级应用和灵活性。通过这个过程,我们希望读者能够深入理解从处理数据(字符串数组)到处理代码(函数指针)的思维转变,并学会将这两种强大的工具结合起来,实现更复杂、更灵活的编程逻辑。

无敌岩雀的博客 1949

C语言:函数指针与指针函数

C语言:函数指针与指针函数

嵌入式学习记录站点 7499

【C语言】指针(3)——更多指针类型:数组指针、函数指针;回调函数

函数指针变量是用来存放函数地址的,未来通过地址能够调用函数。总结:二维数组传参,形参可以写成指针形式,也可以写成数组形式。4.函数指针变量4.1函数指针变量的创建函数指针变量是用来存放函数地址的,未来通过地址能够调用函数。通过函数结果可以发现,函数名和&函数名都是函数的地址。要将函数的地址存放起来,就需要创建函数指针变量。parr1先和[]结合,说明parr1是数组,数组的内容是int(*)()类型的函数指针。

Z2382430464的博客 1199
上一篇: C语言深入了解指针(2)-- 数组名的理解,数组传参的本质,二级指针,指针数组
下一篇: C语言中的字符函数和字符串函数
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值