首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将“浮动*”转换为“浮动”

无法将“浮动*”转换为“浮动”
EN

Stack Overflow用户
提问于 2020-05-15 16:53:41
回答 3查看 876关注 0票数 0
代码语言:javascript
复制
#include<math.h>
#include<stdio.h>
#include<stdlib.h>

float array(float a[],int n);

int main() {
    int k=5;
    float a[k+1];
    array(a[k+1],k);
}

float array(float a[],int n )// n = size of array
{
    printf("enter elements in order of increasing:\n");
    for(int i=0;i<n;i++) {
        printf("array[%d]:",i);
        scanf("%f",&a[i]);  
    }
    return a;
}                                   

我想要构建一个程序来使用一个函数来给一个数组增加浮点数,但是它有一个错误,编译器会显示以下这些错误:

代码语言:javascript
复制
[Error] cannot convert 'float*' to 'float' in return9
[Error] cannot convert 'float' to 'float*' for argument '1' to 'float array(float*, int)'
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-05-15 16:55:51

a类型为float*,返回类型为float。您需要返回一个浮动,或者将返回类型转换为指针。

票数 5
EN

Stack Overflow用户

发布于 2020-05-15 17:08:16

首先,您将索引k + 1的数组中不存在的元素传递给函数。

代码语言:javascript
复制
array(a[k+1],k);

表达式a[k+1]的类型是float,而函数需要的是float *类型的对象。您需要调用该函数,如

代码语言:javascript
复制
array( a, k + 1 );
      ^^^ ^^^^^ 

这也是因为实际上使用k+1元素声明的数组。

代码语言:javascript
复制
float a[k+1];

但是,尚不清楚为什么变量k是用初始化器5声明的,而数组是用k+1元素声明的,即有6个元素。如果元素的数量等于k的值,则更符合逻辑。例如

代码语言:javascript
复制
int k = 5; // or int k = 6
float a[k];
array( a, k )

函数使用返回类型float声明。

代码语言:javascript
复制
float array(float a[],int n);

但是函数实际上返回一个类型为float *的对象。

代码语言:javascript
复制
float array(float a[],int n )// n = size of array
{
    //...
    return a;
}  

函数的返回类型没有多大意义。将函数声明为具有返回类型void

代码语言:javascript
复制
void array(float a[],int n);

//...

void array(float a[],int n )// n = size of array
{
    printf("enter elements in order of increasing:\n");
    for(int i=0;i<n;i++) {
        printf("array[%d]:",i);
        scanf("%f",&a[i]);  
    }
}  
票数 2
EN

Stack Overflow用户

发布于 2020-05-15 17:04:18

这些错误是相当描述性的。

  1. 传递a作为您只需编写

的第一个参数

代码语言:javascript
复制
    array(a, k);

注意,a[k+1]是一个不存在的元素,索引是k+1k是最大的元素,因此这个表达式实际上调用了UB。

如果要返回整个数组,则声明函数为返回类型的float.,而不是一个float *

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61824500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档