始不垂翅 发表于 2020-11-29 10:48:04

求助大佬们一个关于指针的问题

我想要输出这一列中最小的数字,但是编译错误:cannot convert 'int (*)' to 'int**'
我不大清楚为什么,如果可以的话,可以帮忙改正一下么
#include<stdio.h>
#include<stdlib.h>
int list_min(int *(list),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 list={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
    printf("%d",list_min(list,4));
}

风过无痕1989 发表于 2020-11-29 11:48:38

为了验证,我将第1行移到了第3行,其他的错误在程序中已经改了,并在注释中注明了
#include<stdio.h>
#include<stdlib.h>
int list_min(int (*list), int n); // *(list)实参与形参不匹配
int list_min(int (*list), 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 = { { 5,6,7,8 },{ 9,10,11,12 },{ 1,2,3,4 },{ 13,14,15,16 } };
        printf("%d\n", list_min(list, 4));
}

始不垂翅 发表于 2020-11-29 12:37:52

风过无痕1989 发表于 2020-11-29 11:48
为了验证,我将第1行移到了第3行,其他的错误在程序中已经改了,并在注释中注明了

{:10_282:}之后我我想给函数传入一个数组指针该怎么做嘞,这个数组指针指向的数组长度是不确定的,由开头输入的值来决定

始不垂翅 发表于 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;
    int i=0,j=0;
        while(i<len)//输入一个二维列表
        {
                while(j<len)
                {
                        scanf("%d",&list);
                        j++;
                }
                j=0;
                i++;
        }
    int (*p)=list;
    printf("%d",list_min(p,4));
    system("pause");
}

这个和上边的目的差不多,但是报错了cannot convert 'int (*)' to 'int (*)[]'

始不垂翅 发表于 2020-11-29 12:40:36

风过无痕1989 发表于 2020-11-29 11:48
为了验证,我将第1行移到了第3行,其他的错误在程序中已经改了,并在注释中注明了

在第36行,可惜没有办法放图片……{:10_243:}

风过无痕1989 发表于 2020-11-29 13:05:46

始不垂翅 发表于 2020-11-29 12:40
在第36行,可惜没有办法放图片……

你第3行改了,第4行不改,不报错那才见鬼呢

风过无痕1989 发表于 2020-11-29 13:11:24

始不垂翅 发表于 2020-11-29 12:37
之后我我想给函数传入一个数组指针该怎么做嘞,这个数组指针指向的数组长度是不确定的,由开头 ...

这个问题已经解决,变长数组的问题,我的 VS2015 编译器不支持。没有经过我的编译器验证的问题,我是不会回答的,所以,我帮不了你。你另外发帖子求助吧

始不垂翅 发表于 2020-11-30 11:23:50

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

很抱歉那么晚给你最佳,但是我每发的一个问题一定都会设置最佳答案的,只是因为逛论坛时间不确定,可能会延误一段时间。还有就是那道题我也是感觉没有区别的,只是因为初学c语言,没有掌握那么深层次,不敢百分之百的保证回答的每一道题正确,所以我会选择看一看其他人的答案
页: [1]
查看完整版本: 求助大佬们一个关于指针的问题