【问题标题】:Pointer Issue in C programmingC编程中的指针问题
【发布时间】:2023-01-19 21:53:33
【问题描述】:

我收到一个错误,但我不太明白为什么请分享任何想法 我认为有关指针的错误 Calibrated *cal;但我不知道如何解决。 我不知道请分享关于这个问题的任何想法



#include <stdio.h>
#include "stdint.h"
#include"string.h"
typedef struct{

 int16_t Calibration_matrice[3][3];
 int16_t average_axis[3];
 int16_t bias[3];
 int16_t total_average;
 float   scales[3];

}Calibrated;


void get_CalibratingValues(Calibrated *cal , int16_t x_max , int16_t x_min , int16_t y_max , int16_t y_min , int16_t z_max , int16_t z_min)
{


     cal->Calibration_matrice[0][0] = x_min;
     cal->Calibration_matrice[0][1] = x_max;
     cal->Calibration_matrice[1][0] = y_min;
     cal->Calibration_matrice[1][1] = y_max;
     cal->Calibration_matrice[2][0] = z_min;
     cal->Calibration_matrice[2][1] = z_max;

     cal->bias[0] = (cal->Calibration_matrice[0][0] + cal->Calibration_matrice[0][1])/2;
     cal->bias[1] = (cal->Calibration_matrice[1][0] + cal->Calibration_matrice[1][1])/2;
     cal->bias[2] = (cal->Calibration_matrice[2][0] + cal->Calibration_matrice[2][1])/2;


     cal->average_axis[0] = (cal->Calibration_matrice[0][1] - cal->Calibration_matrice[0][0])/2;
     cal->average_axis[1] = (cal->Calibration_matrice[1][1] - cal->Calibration_matrice[1][0])/2;
     cal->average_axis[2] = (cal->Calibration_matrice[2][1] - cal->Calibration_matrice[2][0])/2;

     cal->total_average =((cal->average_axis[0] + cal->average_axis[1] + cal->average_axis[2]) / 3);

     cal->scales[0] = (float)(cal->total_average / cal->average_axis[1]);
     cal->scales[1] = (float)(cal->total_average / cal->average_axis[2]);
     cal->scales[2] = (float)(cal->total_average / cal->average_axis[3]);

}

int main()
{     Calibrated *cal;
      
      get_CalibratingValues(cal,4070,-6610,6440,-4410,4197,-5865);

       printf("%d\n",cal->Calibration_matrice[0][0]); // it is not take a value
     
    
    return 0;
}

【问题讨论】:

    标签: pointers error-handling segmentation-fault


    【解决方案1】:

    您的变量 cal 未初始化。尝试:

      Calibrated* cal = (Calibrated *) malloc(sizeof(Calibrated));
    

    不要忘记在最后处理它:

      free(cal);
    

    一旦我这样做了,我得到了-6610的输出值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-13
      • 1970-01-01
      • 2011-08-21
      • 2022-06-14
      • 1970-01-01
      相关资源
      最近更新 更多