鱼C论坛

 找回密码
 立即注册
查看: 2015|回复: 8

[已解决]一个函数的问题

[复制链接]
发表于 2017-11-18 20:09:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

原程序出错的地方就是这里,所以我简化了下  也是同样的问题C:\Users\Administrator\Desktop\未命名3.cpp        [Error] 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:56:47
参考:
https://www.cnblogs.com/applebunny/archive/2012/09/09/2677307.html

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

  1. #include <stdio.h>
  2. #define size 4

  3. void printfboard(int board[][size]);
  4. int main()
  5. {
  6.         int board[size][size];
  7.         printfboard(board);

  8.                 return 0;
  9. }
  10. void printfboard(int board[][size])
  11. {
  12.         int i, j;
  13.         for(i=0; i<size; i++)
  14.         {
  15.                 for(j=0; j< size; j++)
  16.                 {
  17.                         printf("%d\n", board[i][j]);
  18.                 }
  19.         }
  20. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-18 20:39:10 | 显示全部楼层
你的函数在最前面声明的时候,没有参数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-18 20:53:45 | 显示全部楼层

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

  6. int main()
  7. {
  8.         int board[size][size];
  9.         printfboard(board[size][size]);        // 这里只能这样调用 :printfboard();
  10.         printfboard_a(board[size - 1][size - 1]);                //printfboard_a 才是可以带参数的, 至于为什么 下标要 size - 1 ,是因为 下标是从0开始的 长度4 的数组 下标范围是 0-3
  11. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-18 20:56:47 | 显示全部楼层    本楼为最佳答案   
参考:
https://www.cnblogs.com/applebunny/archive/2012/09/09/2677307.html

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

  1. #include <stdio.h>
  2. #define size 4

  3. void printfboard(int board[][size]);
  4. int main()
  5. {
  6.         int board[size][size];
  7.         printfboard(board);

  8.                 return 0;
  9. }
  10. void printfboard(int board[][size])
  11. {
  12.         int i, j;
  13.         for(i=0; i<size; i++)
  14.         {
  15.                 for(j=0; j< size; j++)
  16.                 {
  17.                         printf("%d\n", board[i][j]);
  18.                 }
  19.         }
  20. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-18 20:59:24 | 显示全部楼层
函数声明出现错误。
使用指向函数的指针先把指针指向函数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-18 21:22:19 | 显示全部楼层
  1. ///函数指针声明:
  2. void (*lpfun)(int a);

  3. lpfun lfun; // lfun 才是变量 lpfun 可以看作一个函数类型结构
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-18 22:38:23 From FishC Mobile | 显示全部楼层
1 你声明的函数形参为空,调用时又传递了一个数组,当然通不过编译,要修改的话,你需要根据实际需求修改函数的形参列表
2 传递一个函数进去,写上函数名即可,不用带小括号,也就是这样
result = three(x, y, add)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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[][size]);
int main()
{
        int board[size][size];
        printfboard(board);
}

错误原因是这样的
7                C:\Users\Administrator\Desktop\未命名3.cpp        undefined reference to `printfboard(int (*) [4])'
C:\Users\Administrator\Desktop\collect2.exe        [Error] ld returned 1 exit status
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-19 00:36:04 | 显示全部楼层
echo000 发表于 2017-11-18 23:30
可是我还是错误了呢。。。我之前也试过声明的时候带参数,但还是失败了
#include
#define size 4

把我上的代码复制上去还能错????????????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 04:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表