鱼C论坛

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

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

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

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

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

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

这个问题已经解决,变长数组的问题,我的 VS2015 编译器不支持。没有经过我的编译器验证的问题,我是不会回答的,所以,我帮不了你。你另外发帖子求助吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

                i++;
        }
        return min_now;
}
int main()
{
        int list[4][4] = { { 5,6,7,8 },{ 9,10,11,12 },{ 1,2,3,4 },{ 13,14,15,16 } };
        printf("%d\n", list_min(list, 4));
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

之后我我想给函数传入一个数组指针该怎么做嘞,这个数组指针指向的数组长度是不确定的,由开头输入的值来决定
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-29 12:39:34 | 显示全部楼层
风过无痕1989 发表于 2020-11-29 11:48
为了验证,我将第1行移到了第3行,其他的错误在程序中已经改了,并在注释中注明了
#include<stdio.h>
#include<stdlib.h>
int list_min(int (*)[],int n);//传入一个列表的地址,还有他的长度,返回其中的最小值
int list_min(int (*list)[],int n)
{
    int min_now=**list;
    int i=0;
    while (i>n)
    {
        if (min_now<*(*list+i))
        {
            min_now=*(*list+i);
        }
        
        i++;
    }
    return min_now;
}
int main()
{
    int len;
    scanf("%d",&len);
    int list[len][len];
    int i=0,j=0;
        while(i<len)//输入一个二维列表
        {
                while(j<len)
                {
                        scanf("%d",&list[i][j]);
                        j++;
                }
                j=0;
                i++;
        }
    int (*p)[len]=list;
    printf("%d",list_min(p,4));
    system("pause");
}
这个和上边的目的差不多,但是报错了cannot convert 'int (*)[len]' to 'int (*)[]'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

在第36行,可惜没有办法放图片……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你第3行改了,第4行不改,不报错那才见鬼呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

这个问题已经解决,变长数组的问题,我的 VS2015 编译器不支持。没有经过我的编译器验证的问题,我是不会回答的,所以,我帮不了你。你另外发帖子求助吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 10:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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