c - 未初始化的局部变量!

标签 c variables malloc struct initialization

这是我的代码:

int main(void)
{
    int i;
    Coords** latLng;
    Quadrado* q1;
    latLng[0] = AdicionaValores(latLng[0],-23.000490,-43.346687);
    latLng[1] = AdicionaValores(latLng[1],-22.988243,-43.342224);
    q1 = AdicionaValoresQuadrado(q1,-23.000490,-43.346687,-22.988243,-43.342224);

    printf("# Connecting to database.\n");
    for(i=0;i<2;i++)
    {
    if(clientInside(q1, latLng[i]))
        printf("Dentro");
    else
        printf("Fora");
    }
    system("PAUSE");
}

这是 AdicionaValores 和 AdicionaValoresQuadrado:

Coords* AdicionaValores(Coords* v, double x, double y)
{
    v = (Coords*) malloc(sizeof(Coords));
    v->x = x;
    v->y = y;
    return v;
}

Quadrado* AdicionaValoresQuadrado(Quadrado* q, double x1, double y1, double x2, double y2)
{
    q = (Quadrado*) malloc(sizeof(Quadrado));
    q->x1 = x1;
    q->x2 = x2;
    q->y1 = y1;
    q->y2 = y2;
    return q;
}

它编译得很好,但有 2 个警告,告诉我 latLng 和 q1 未初始化!我应该怎么办 ?? malloc 他们在 main 上?帮助!

最佳答案

你可以声明:

Coords *latLng[2];

对于“latLng”没有被初始化的问题,或者在main中malloc它。

对于其他人——函数根本没有理由将指针作为第一个参数,因为它没有对原始值做任何事情。也是如此:

Coords* AdicionaValores(double x, double y)
{
    Coords* v = (Coords*) malloc(sizeof(Coords));
    ....
}
Quadrado* AdicionaValoresQuadrado(double x1, double y1, double x2, double y2)
{
    Quadrado* q = (Quadrado*) malloc(sizeof(Quadrado));
    ....
}

然后不要在 main 中将第一个参数传递给它们。

关于c - 未初始化的局部变量!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6090387/

相关文章:

c - 为什么在不同的 linux 系统上,格式字符串在堆栈上的位置如此不同?

JavaScript 'or' 语句

jquery - 如何将 JQuery 变量传递给 Razor?

c - 堆分配一个二维数组(不是指针数组)

c - C中分配的结构指针的"default value"

我们可以使用单个 malloc() block 来表示两种不同的类型吗?

c - 我如何在 Unix C 中使用两个管道?

c - C 中的 Select() 问题(Windows 7)

c++ - C/C++ 使用内存值预定义数组

Python 变量分配和 `id` 关键字