【问题标题】:invalid conversion from int to *int从 int 到 *int 的无效转换
【发布时间】:2013-06-08 07:15:20
【问题描述】:

代码显示了从 int 到 *int 的无效转换 我该如何解决这个问题......下面给出了错误的完整细节

错误:

WAP 查找动态数组中的最大值

在函数'int* search(int*, int)'::

12 从 'int*' 到 'int' 的无效转换 [-fpermissive]

代码:

#include<iostream>
#include<conio.h>
using namespace std;

int *search (int arr[], int size);

int main()
{
    int ar[5];
    int *loc;  
    cout << "Enter the values in array: \n "; 
    for(int i=0;i<5;i++)
        cin>> ar[i];

    loc = search(ar,5); 


    for(int i=0;i<10000000000;i++); 
    return 0;   
}


int *search (int arr[], int size)
{
    int *ptr; 
    *ptr = arr; 
    for(int i=1;i<size;i++)
    {
        if(arr[i] > *ptr)
            ptr = &arr[i];
    }
    return ptr; 
}

【问题讨论】:

  • 你的代码是如何用conio.h编译的?
  • @AlokSave 我认为它仍然存在于VS中(至少在旧版本中)。
  • 错误在*ptr = arr;这一行。

标签: c++ arrays function pointers


【解决方案1】:

不是

int *ptr; 
*ptr = arr; 

应该是

int *ptr; 
ptr = arr;

【讨论】:

  • 这个函数有更多的问题。
【解决方案2】:

在 C++ 或 C 中,

int arr[5];

arr 的类型是 int*。

【讨论】:

  • 不,arr 的类型是int[5]。当您将其传递给函数时(以及在许多其他情况下),arr 将转换为 int*,但数组与指针有很大不同。
猜你喜欢
  • 1970-01-01
  • 2017-02-19
  • 2020-01-15
  • 2012-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多