小甲鱼 发表于 2016-10-21 03:38:15

已有 25 人购买  本主题需向作者支付 5 鱼币 才能浏览 购买主题

向往美丽 发表于 2017-1-7 12:08:32

这一块听的有点蒙圈了

向往美丽 发表于 2017-1-7 12:09:21

得好好捋一捋

Sboy 发表于 2017-1-18 10:38:20

假 鱼 老师 {:9_223:}



5-+   结果   5- 134513251

5+- 结果    5+ 134513251

请问   134513251是怎么出来的



zzxwbs 发表于 2017-2-18 02:18:30

本帖最后由 zzxwbs 于 2017-2-18 02:37 编辑

Sboy 发表于 2017-1-18 10:38
假 鱼 老师




scanf第三个格式输入不正确,理论上来说第三个无法输入,有的编译器按照0来处理,有的编译器给一个固定的数字处理,还有int最大支持65535,再大就过界了也不能正常运算

huiwenwu 发表于 2017-8-1 12:27:00

这节有难度,硬骨头啊

fang_star 发表于 2017-12-13 15:54:01

{:10_266:}

ych 发表于 2017-12-14 21:11:32

{:10_299:}

我要吃肉肉 发表于 2018-8-7 12:18:12

#include <stdio.h>

int a,b,c;

void main()

{
        int max(int,int);
        int min(int,int);
        int sum(int,int);

        void process(int x,int y,int(*fun)());

       
        printf("plsase input a&b:");
        scanf("%d%d",&a,&b);

        printf("max=");
        process(a,b,max);

        printf("min=");
        process(a,b,min);

        printf("sum=");
        process(a,b,sum);
}
void process(int x,int y,int(*fun)())
{
        c=max(a,b);
        printf("%d\n",c);
        c=min(a,b);
        printf("%d\n",c);
        c=sum(a,b);
        printf("%d\n",c);
}
int max(int x,int y)
{

        if(a>b)
        {
                return a;
        }
        else
        {
                return b;
        }
}

int min(int x,int y)
{
        if(a<b)
        {
                return a;
        }
        else
        {
                return b;
        }
}

int sum(int x,int y)
{
        int add;
        add=a+b;
        return add;
}

我要吃肉肉 发表于 2018-8-7 12:18:53

高手们帮我看看上面程序,哪里错了!

小仙儿 发表于 2018-8-8 20:39:26

你说错了吧为什么不可以返回局部变量的指针 ,明明可以返回,我只知道不可以返回局部变量的引用
#include<stdio.h>//二维数组名做参数
void main()
{
        double *search (double a[],int n);double *re;
        double score={{33,45,67,78},{8,5,67,89},{97,95,44,99}};
        int i,j;
        for(i=0;i<3;i++)
                for(j=0;j<4;j++)
                {
                        printf("%.2lf",score);
                }
                re=search (score,1);
                for(i=0;i<4;i++)
                {
                        printf("%lf\n",*(re+i));
                }
}
double *search (double a[],int n)
{
        double *ll;
        ll=a;//二维数组中一维数组代表地址,代表二维数组中每一行的地址
        return ll;
这个程序就是对的
}

446546406 发表于 2018-11-2 09:42:27

咚咚咚咚咚咚咚···{:10_266:}
这敲键盘的声音每节课都听的我惊心动魄{:10_250:}

Jundong-4316 发表于 2019-3-5 20:51:20

函数指针作为参数

#include <stdio.h>

int add(int, int);
int sub(int, int);
int calc(int (*fp)(int, int), int, int);//此函数有三个参量,第一个参量是函数指针,第二、第三个是整型参数

int add(int num1, int num2)
{
      return num1 + num2;
}

int sub(int num1, int num2)
{
      return num1 - num2;
}

int calc(int (*fp)(int, int), int num1, int num2)
{
      return (*fp)(num1, num2);//参数num1、num2作为函数指针 fp 所指向的函数的输入参数;
}

int main()
{
      printf("3 + 5 = %d\n", calc(add, 3, 5));//函数名add其实就是一个地址,直接作为函数指针使用
      printf("3 - 5 = %d\n", calc(sub, 3, 5));

      return 0;
}

---------------------------------------------------------------------------------------------------------------
函数指针作为返回值

int (*select(char op))(int, int);//首先这是一个函数指针,指向有两个int变量的函数,其所指向的函数地址由指针函数*select(char op) 获得

int (*select(char op))(int, int)
{
        switch(op)
        {
                case '+': return add;
                case '-': return sub;
        }
}
int main()
{
        int num1, num2;
        char op;
        int (*fp)(int, int);
        printf("请输入一个式子(如:1+2):");
        scanf("%d%c%d", &num1, &op, &num2);
        fp = select(op);
        printf("%d %c %d = %d\n", num1, op, num2, calc(fp, num1, num2));
        return 0;
}

不知道这样理解对不对

etalllin 发表于 2019-5-15 16:09:12

总感觉 select 与 calc 有哪里功能是重复的,有点绕

Dystopia 发表于 2019-6-18 20:24:28

打卡

yjh19961228 发表于 2019-7-17 11:16:09

{:10_292:}

敌敌畏迪迪卫 发表于 2019-8-18 16:01:51

{:10_327:}{:10_265:}{:10_284:}{:10_291:}蒙圈了    我听完就忘   自己分析又分析不出来{:10_266:}{:10_266:}{:10_266:}

敌敌畏迪迪卫 发表于 2019-8-18 16:53:45

{:10_266:}{:10_266:}{:10_266:}码住   再看看视频理解理解

xztzz 发表于 2019-10-12 16:26:26

魔鬼{:10_266:}{:10_266:}{:10_266:}

Draem 发表于 2020-3-26 19:09:26

#include<stdio.h>
int add(int, int);
int sub(int, int);
int cal(int(*p)(int ,int),int, int) ;
int(*p(char ))(int ,int);
int add(int a,int b)
{
        return a + b;
}
int sub(int a,int b)
{
        return a-b;
}

int cal(int(*p)(int,int),int a,int b)
{
        return p(a,b);
       
}
int(*p(char c))(int a ,int b)
{
        switch(c)
        {
                case '+':return add;
                case '-':return sub;
        }
       
}

int main(void)
{
        printf("please input a presentation,such as (a-b)");
        int a,b;
        char c;
        scanf("%d%c%d",&a,&c,&b);
        int (*fp)(int ,int);
        fp = p(c);
        printf("%d %c %d = %d",a,c,b,cal(fp,a,b));
        return 0;
}
页: [1] 2 3
查看完整版本: S1E30:指针函数和函数指针