Arrays 使用C语言中的函数打印数组值

Arrays 使用C语言中的函数打印数组值,arrays,c,function,Arrays,C,Function,我对编程非常陌生,我正在使用函数打印阵列,遇到了以下错误 Test.c: In function ‘main’: Test.c:21:54: error: incompatible type for argument 1 of ‘theta’ 21 | printf("The theta values are = %lf\n", x[i], theta(x[i])); |

我对编程非常陌生,我正在使用函数打印阵列,遇到了以下错误

Test.c: In function ‘main’:

Test.c:21:54: error: incompatible type for argument 1 of ‘theta’
21 |  printf("The theta values are = %lf\n", x[i], theta(x[i]));
   |                                                     ~^~~
   |                                                      |
   |                                                      double
Test.c:5:21: note: expected ‘double *’ but argument is of type ‘double’
5 | double theta(double x[N])
  |              ~~~~~~~^~~~
这是代码

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

#define N 50

double theta(double x[N]);

int main(){
    int i;   
    double x[i];

    printf("The theta values are = %lf\n", x[i], theta(x[i]));
    return 0;
}

double theta(double x[N]){
    int i;

    for(i = 0; i < 50; i++){
        x[i] = (double)(i)/ ((double)(N) - 1.0);
    }
    return x[i];
}
#包括
#包括
#定义N 50
双θ(双x[N]);
int main(){
int i;
双x[i];
printf(“θ值=%lf\n”,x[i],θ(x[i]);
返回0;
}
双θ(双x[N]){
int i;
对于(i=0;i<50;i++){
x[i]=(双倍)(i)/(双倍)(N)-1.0;
}
返回x[i];
}
我只想打印0到1之间的50个值。就像MATLAB中的linspace(0:1:50)一样


谢谢您的帮助。

首先,在declare函数中,您不能设置数组的大小。 改为

double theta(double* X)
第二,做双θ(双x[N]);主要功能

这是编译器并没有告诉你们的,但我在你们的代码中发现了错误

首先,θ中的i与主要的i不同

第二,使用
for
进行打印

我想你想要这个密码

#include<stdio.h>
#include<stdlib.h>
#define N 50

double* theta()
{
  int i;
  double x[N];
  for(i = 0; i < N; i++){
  x[i] = (double)(i)/ ((double)(N) - 1.0);
 }
 return x;
}


int main(){
 int i;   
 double* x=theta();
 for(i=0;i<N;i++){
    printf("The theta values are = %lf\n", x[i]);
 }
 return 0;
}  
#包括
#包括
#定义N 50
双*θ()
{
int i;
双x[N];
对于(i=0;i对于(i=0;i我找到了解决方案

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

#define N 50

double* theta(double x[], int nb_elements){
    int i;

    for(i = 0; i < nb_elements; i++){
        x[i] = (double)(i)/ ((double)(nb_elements) - 1.0);
    }
    return &x[0];
}

int main(){
    int i;   
    double x[N];

    theta(x, N);

    for(i = 0; i < N; i++){
        printf("%lf\n", x[i]);
    }
    return 0;
}
#包括
#包括
#定义N 50
双*θ(双x[],整数nb_元素){
int i;
对于(i=0;i
int i;double x[i];
未定义的行为。
i
此时没有正式值,因此
x
没有合理的容量。一旦固定,
theta(x[i])
应该是
theta(x)
,但是您还有另一个问题:
返回x[i]如果在
main
中声明为
double x[50]
,则
theta中的
将违反声明的
x维度。您需要按照数组中所需的离散元素数初始化i
#include <stdio.h>
#include <stdlib.h>

#define N 50

double* theta(double x[], int nb_elements){
    int i;

    for(i = 0; i < nb_elements; i++){
        x[i] = (double)(i)/ ((double)(nb_elements) - 1.0);
    }
    return &x[0];
}

int main(){
    int i;   
    double x[N];

    theta(x, N);

    for(i = 0; i < N; i++){
        printf("%lf\n", x[i]);
    }
    return 0;
}