zoukankan      html  css  js  c++  java
  • C语言 函数指针 函数指针数组的用法

    * pointer1              //该指针指向从该地址开始一个1字节的内容

    short int* pointer2;        //该指针指向从该地址开始一个2字节的内容

    long int* pointer3;         //该指针指向从该地址开始一个4字节的内容

    long long int* ponter4;     //该指针指向从该地址开始一个8字节的内容

    pointer1++ 使其对应内存地址移动一个字节

    pointer2++ 使其对应内存地址移动两个字节

    pointer3++ 使其对应内存地址移动三个字节

    pointer4++ 使其对应内存地址移动四个字节

    typedef void(*FUNC)(void);  //定义函数指针类型FUNC

    //打印函数

    void printpass()

    {

    puts("congratunation!");

     }

     void printfail()

     {

      puts("sorry!");

     }

    void doprint(int *score,FUNC f)   //执行打印任务

    {

    printf("your score is %d. ",*score);  //通过数据指针访问它所指向的数据

    if(NULL!=f)

    f();

    }

    int main()

    {

    const int count = 30;

    int scores[count];

    puts("please input the scores.");

    int *p=scores;

    for(int i=0;i<count;++i)

    {

    scanf("%d",p);   //将输入的地址保存在p所指向的数据元素

    ++p;

    }

    //p重新指向第一个元素

    p=scores;

    FUNC pfunc=NULL; //用函数指针(FUNC f)传递函数

    for(int i=0;i<count;++i)

    {

    if((*p)>=60)

    pfunc=printpass;

    else

    punc=printfail;

    doprint(p,pfunc);

    ++p;

     }

    return 0;

    }

    typedef struct

    {

      void **pMem;        //指向队列缓存

    uint8_t memSize;    //队列大小

    uint8_t readIndex;  //读队列索引

    uint8_t writeIndex; //写队列索引

    }Queuemsg_stu_t;

       

    数组比较

    u8 gui[5]={1,2,3,4,5},zhou[5]={1,2,3,4,5};  

    if (memcmp(&gui, &zhou, sizeof(zhou)) == 0)// (memcmp(gui, zhou, sizeof(zhou))

    {

    }

    只要gui[]zhou[]内容一样,比对取地址和值都是可以比对成功

    Task_stu_t *pTask_stu_t;

    pTask_stu_t  =  (Task_stu_t *)EEEPROM_BASE_ADDR;

    &(pTask_stu_t->timeStamp));  地址

    (pTask_stu_t->timeStamp));  

    int *ip;

    int vaar=20;

    ip=&vaar;

        printf(" *ip=%d ", *ip);

    printf(" vaar=%d ", vaar);

    *ip=30;

    printf(" *ip=%d ", *ip);

    printf(" vaar=%d ", vaar);

    函数参数传递

  • 相关阅读:
    今天做了个小项目
    了解类与对象
    装机时键盘选择失误?教你修改kali Linux键盘到美式。
    一些模塊的用法
    你也是全员模块?
    金额保留2位小数 xx.00
    maven项目统一管理版本
    启动项目报错——找不到或无法加载主类 io.vertx.core.Launcher
    以jar包方式启动
    支付业务接口功能(二)
  • 原文地址:https://www.cnblogs.com/wangzhihong-102511/p/10412125.html
Copyright © 2011-2022 走看看