繁体   English   中英

使用realloc函数的麻烦

[英]Troubles using realloc function

我的代码遇到麻烦,需要您的建议,当我编译代码时,它在realloc行显示警告,它说:“赋值使指针从整数开始而不进行强制转换”,但是它可以编译并且一切运行良好,直到我需要扩展数组,当我输入多少数字时我需要崩溃。 你知道是什么原因造成的吗? 我该如何解决? 谢谢。

编辑:已经修复了! 以下代码现已正常运行。 码:

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
struct numer{
    int limit;
    int start;
    double *num;
    double avg;
};

void fill(struct numer *data);
double ave(struct numer data);
double vari(struct numer data);

int main (){
    int n,op;
    printf ("!!++***Programa para calcular desviacion estandar, la media y la varianza***++!!");
    printf("\nIngrese el número de datos que desea introducir: ");
    scanf("%d", &n);
    struct numer data;
    data.start=0;
    data.num = malloc(n*sizeof(*data.num));

    while(1){
        data.limit=n;
        fill(&data);
        data.avg=ave(data);
        printf("\nLa media es igual a %lf", data.avg);
        printf("\nLa desviacion estandar es igual a %lf", sqrt(vari(data)));
        printf("\nLa varianza es igual a %lf",vari(data));
        printf("\nDeseas añadir mas datos?, presiona 1 para aceptar, 2 para salir: ");
        scanf ("%d",&op);
            if (op==1){
                printf("\nCuantos datos mas deseas añadir?: ");
                scanf("%d",&op);
                n+=op;
                data.num = realloc(data.num, n*sizeof(*data.num));
            }
            else return 0;

    }

}

void fill(struct numer *data){
    for (;data->start<data->limit;data->start++){
        printf("\nIngresa el dato %d: ",data->start+1);
        scanf("%lf",&data->num[data->start]);
    }
}
double ave(struct numer data){
    double ave=0;
    int i;
    for (i=0;i<data.limit;i++){
        ave+=data.num[i];
    }
    ave/=data.limit;
    return ave;
}
double vari(struct numer data){
    double semi=0;
    int i;
    for (i=0; i<data.limit; i++){
        semi+=pow((data.num[i]-data.avg),2);
    }
    semi/=data.limit;
    return semi;
}

您尚未在stdlib.h中包含mallocrealloc的原型。

如果没有原型,编译器会假设realloc返回int而不是void* ,并且您将int分配给指针data.num 将整数分配给声明为指针的变量时,会收到警告。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM