echo000 发表于 2017-11-18 20:09:00

一个函数的问题

#include<stdio.h>
#define size 4
int printfboard();
int main()
{
        int board;
        printfboard(board);
}

原程序出错的地方就是这里,所以我简化了下也是同样的问题C:\Users\Administrator\Desktop\未命名3.cpp        too many arguments to function 'int printfboard()'
请问是怎么回事,能讲下原理最好了,还有我应该怎么改呢?

另外有一个问题,我想将一个函数的地址作为形参传进另一个函数里我该怎么做呢?
就像是这样
int add(int a,int b)
int three(int a,int b,int(*p)())
我想把add()这个函数传进three里该怎么写呢
我当时写的是这样three(a,b,add())报错了呢然后我把add()换了好几种写法一样报错。。。
还请指教,谢谢

陪你看雪 发表于 2017-11-18 20:39:10

你的函数在最前面声明的时候,没有参数。

lfjking 发表于 2017-11-18 20:53:45


#include<stdio.h>
#define size 4
int printfboard();        //你这里是不带参数的,所以你的调用是不能带参数的,如果要接收参数就必须声明带参数
//如:
int printfboard_a(int a);

int main()
{
      int board;
      printfboard(board);        // 这里只能这样调用 :printfboard();
        printfboard_a(board);                //printfboard_a 才是可以带参数的, 至于为什么 下标要 size - 1 ,是因为 下标是从0开始的 长度4 的数组 下标范围是 0-3
}

ba21 发表于 2017-11-18 20:56:47

参考:
https://www.cnblogs.com/applebunny/archive/2012/09/09/2677307.html

我想将一个函数的地址作为形参传进另一个函数里我该怎么做呢
那就声明个函数指针然后把这个函数指针传入另一个的函数

#include <stdio.h>
#define size 4

void printfboard(int board[]);
int main()
{
      int board;
      printfboard(board);

                return 0;
}
void printfboard(int board[])
{
        int i, j;
        for(i=0; i<size; i++)
        {
                for(j=0; j< size; j++)
                {
                        printf("%d\n", board);
                }
        }
}

清欢怅冷 发表于 2017-11-18 20:59:24

函数声明出现错误。
使用指向函数的指针先把指针指向函数。

lfjking 发表于 2017-11-18 21:22:19

///函数指针声明:
void (*lpfun)(int a);

lpfun lfun; // lfun 才是变量 lpfun 可以看作一个函数类型结构

BngThea 发表于 2017-11-18 22:38:23

1 你声明的函数形参为空,调用时又传递了一个数组,当然通不过编译,要修改的话,你需要根据实际需求修改函数的形参列表
2 传递一个函数进去,写上函数名即可,不用带小括号,也就是这样
result = three(x, y, add)

echo000 发表于 2017-11-18 23:30:55

ba21 发表于 2017-11-18 20:56
参考:
https://www.cnblogs.com/applebunny/archive/2012/09/09/2677307.html



可是我还是错误了呢。。。我之前也试过声明的时候带参数,但还是失败了
#include<stdio.h>
#define size 4
int printfboard(int board[]);
int main()
{
        int board;
        printfboard(board);
}

错误原因是这样的
7                C:\Users\Administrator\Desktop\未命名3.cpp        undefined reference to `printfboard(int (*) )'
C:\Users\Administrator\Desktop\collect2.exe        ld returned 1 exit status

ba21 发表于 2017-11-19 00:36:04

echo000 发表于 2017-11-18 23:30
可是我还是错误了呢。。。我之前也试过声明的时候带参数,但还是失败了
#include
#define size 4


把我上的代码复制上去还能错????????????
页: [1]
查看完整版本: 一个函数的问题