1. ホーム
  2. c

[解決済み】警告。この関数ではXが初期化されていない状態で使用される可能性があります。

2022-01-28 01:44:09

質問

カスタム構造体(quot;vector")を書いています。どうして Warning: "one" may be used uninitialized をここに示します。

これは私のvector.hファイルです

#ifndef VECTOR_H
#define VECTOR_H

typedef struct Vector{
    int a;
    int b;
    int c;
}Vector;

#endif /* VECTOR_ */

警告は次の行で発生します。 one->a = 12

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include "vector.h"

int main(void){
    Vector* one;
    one->a = 12;
    one->b = 13;
    one->c = -11;
}

解決方法は?

one が割り当てられていないため、予測不可能な場所を指しています。 スタックに配置するかしてください。

Vector one;
one.a = 12;
one.b = 13;
one.c = -11

または動的にメモリを確保します。

Vector* one = malloc(sizeof(*one))
one->a = 12;
one->b = 13;
one->c = -11
free(one);

を使用していることに注意してください。 free を使用します。 一般的には、1回だけ free を呼び出すごとに malloc .