鱼C论坛

 找回密码
 立即注册
查看: 1360|回复: 7

[已解决]求助大佬们一个关于指针的问题

[复制链接]
发表于 2020-11-29 10:48:04 | 显示全部楼层 |阅读模式

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

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

x
我想要输出这一列中最小的数字,但是编译错误:cannot convert 'int (*)[4]' to 'int**'
我不大清楚为什么,如果可以的话,可以帮忙改正一下么
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int list_min(int *(list)[4],int n);//传入一个列表的地址,还有他的长度,返回其中的最小值
  4. int list_min(int *(list)[4],int n)
  5. {
  6.     int min_now=**list;
  7.     int i=0;
  8.     while (i>n)
  9.     {
  10.         if (min_now<**(list+i))
  11.         {
  12.             min_now=**(list+i);
  13.         }
  14.         
  15.         i++;
  16.     }
  17.     return min_now;
  18. }
  19. int main()
  20. {
  21.     int list[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
  22.     printf("%d",list_min(list,4));
  23. }
复制代码
最佳答案
2020-11-29 13:11:24
始不垂翅 发表于 2020-11-29 12:37
之后我我想给函数传入一个数组指针该怎么做嘞,这个数组指针指向的数组长度是不确定的,由开头 ...

这个问题已经解决,变长数组的问题,我的 VS2015 编译器不支持。没有经过我的编译器验证的问题,我是不会回答的,所以,我帮不了你。你另外发帖子求助吧
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-29 11:48:38 | 显示全部楼层
为了验证,我将第1行移到了第3行,其他的错误在程序中已经改了,并在注释中注明了
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int list_min(int (*list)[4], int n); // *(list)[4]实参与形参不匹配
  4. int list_min(int (*list)[4], int n)
  5. {
  6.         int min_now = **list;
  7.         int i = 1;                      // 上面的语句定义时已经将第1列的值赋给了 min_now
  8.         while (i < n)                   // 只有当 i < n 时才循环
  9.         {
  10.                 if (min_now > **(list + i)) // 要找的是最小值,不是最大值
  11.                 {
  12.                         min_now = **(list + i);
  13.                 }

  14.                 i++;
  15.         }
  16.         return min_now;
  17. }
  18. int main()
  19. {
  20.         int list[4][4] = { { 5,6,7,8 },{ 9,10,11,12 },{ 1,2,3,4 },{ 13,14,15,16 } };
  21.         printf("%d\n", list_min(list, 4));
  22. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-29 12:37:52 | 显示全部楼层
风过无痕1989 发表于 2020-11-29 11:48
为了验证,我将第1行移到了第3行,其他的错误在程序中已经改了,并在注释中注明了

之后我我想给函数传入一个数组指针该怎么做嘞,这个数组指针指向的数组长度是不确定的,由开头输入的值来决定
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-29 12:39:34 | 显示全部楼层
风过无痕1989 发表于 2020-11-29 11:48
为了验证,我将第1行移到了第3行,其他的错误在程序中已经改了,并在注释中注明了
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int list_min(int (*)[],int n);//传入一个列表的地址,还有他的长度,返回其中的最小值
  4. int list_min(int (*list)[],int n)
  5. {
  6.     int min_now=**list;
  7.     int i=0;
  8.     while (i>n)
  9.     {
  10.         if (min_now<*(*list+i))
  11.         {
  12.             min_now=*(*list+i);
  13.         }
  14.         
  15.         i++;
  16.     }
  17.     return min_now;
  18. }
  19. int main()
  20. {
  21.     int len;
  22.     scanf("%d",&len);
  23.     int list[len][len];
  24.     int i=0,j=0;
  25.         while(i<len)//输入一个二维列表
  26.         {
  27.                 while(j<len)
  28.                 {
  29.                         scanf("%d",&list[i][j]);
  30.                         j++;
  31.                 }
  32.                 j=0;
  33.                 i++;
  34.         }
  35.     int (*p)[len]=list;
  36.     printf("%d",list_min(p,4));
  37.     system("pause");
  38. }
复制代码

这个和上边的目的差不多,但是报错了cannot convert 'int (*)[len]' to 'int (*)[]'
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-29 12:40:36 | 显示全部楼层
风过无痕1989 发表于 2020-11-29 11:48
为了验证,我将第1行移到了第3行,其他的错误在程序中已经改了,并在注释中注明了

在第36行,可惜没有办法放图片……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-29 13:05:46 | 显示全部楼层
始不垂翅 发表于 2020-11-29 12:40
在第36行,可惜没有办法放图片……

你第3行改了,第4行不改,不报错那才见鬼呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-29 13:11:24 | 显示全部楼层    本楼为最佳答案   
始不垂翅 发表于 2020-11-29 12:37
之后我我想给函数传入一个数组指针该怎么做嘞,这个数组指针指向的数组长度是不确定的,由开头 ...

这个问题已经解决,变长数组的问题,我的 VS2015 编译器不支持。没有经过我的编译器验证的问题,我是不会回答的,所以,我帮不了你。你另外发帖子求助吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-30 11:23:50 | 显示全部楼层
风过无痕1989 发表于 2020-11-29 13:11
这个问题已经解决,变长数组的问题,我的 VS2015 编译器不支持。没有经过我的编译器验证的问题,我是不会 ...

很抱歉那么晚给你最佳,但是我每发的一个问题一定都会设置最佳答案的,只是因为逛论坛时间不确定,可能会延误一段时间。还有就是那道题我也是感觉没有区别的,只是因为初学c语言,没有掌握那么深层次,不敢百分之百的保证回答的每一道题正确,所以我会选择看一看其他人的答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-5 11:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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