【问题标题】:Return makes integer from pointer without a cast [-Wint-conversion]Return 从没有强制转换的指针生成整数 [-Wint-conversion]
【发布时间】:2019-02-16 21:17:49
【问题描述】:

我在执行代码时收到以下错误。我错过了什么?
警告:传递“Max”的参数 1 使指针从整数而不进行强制转换 [-Wint-conversion] 警告:return 从没有强制转换的指针中生成整数 [-Wint-conversion]。

//头文件声明

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

//Function Declarations

int Max(int Ar[15],int x);
int Array(int Ar[15],int a);


int main()
{
    int Ary[15],x1,Max1;

  printf("\n \n Enter the Size of Array: ");
  scanf("%d",&x1);

  printf(" Input elements of Array:");  


   //Function Call

   //Array Builder
   Array(Ary[15], x1);

   //Compute Maximum Number of Array
  Max1=Max(Ary[15],x1);

   //Displaying Maximum Number of Array

   printf("\n Maximum Number of Array:");
   printf("%d",Max1);         

   return 0;
 }

//Function-Build Array    

int Array(int Ar[15],int a)
{
 int i,j;
 for(i=0;i<a;i++)
 {
  scanf("%d",&Ar[i]);
 }
 return Ar;
}

//函数-计算数组的最大元素

int Max(int Ar[15],int x)
{
    int i,j,v,Max_n;
    Ar[0]=Max_n;

    for(i=1;i<x;i++)
 {
   if(Ar[i]>Max_n)    
   {
      v=Max_n;
      Max_n=Ar[i];
      Ar[i]=v;

   }
 }
 return Max_n;    
}

【问题讨论】:

    标签: pointers integer


    【解决方案1】:

    Ary[15] 为您提供数组的最后一个 int,您应该尝试传递数组本身:Array(Ary,x1) 和 Max(Ary,x1)。

    顺便说一句,这只是一个警告。不过,一个大问题,你的程序一定会在某个时候崩溃。

    【讨论】:

    • 我想将最大数从 int Max 函数返回到主程序。但不幸的是,当我通过函数调用 Max1=Max(Ary,x1); 调用 Max Number 时,我得到一个长数字,如 45867859;如何避免这种情况?如果必须得到确切的整数,我该怎么办?
    • 首先,请告诉我们更多关于你是如何做的细节。仅根据您的评论,我无法说明什么应该或不应该起作用。我的猜测是,如果你得到一个像这样的巨大数字,要么你忘记初始化数组,或者更糟糕的是,你要追踪它的最后一个条目(Ar [14]),所以你拿起了任何在之后存储的值数组。
    猜你喜欢
    • 1970-01-01
    • 2016-05-29
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2019-09-17
    • 1970-01-01
    • 2016-05-19
    相关资源
    最近更新 更多